你好,上面的代码运行出来版本上有个问题。修改之后再运行无错误,但是导出来的PDF文件呈现效果并不好,代码如下:
import dbfread
import pandas as pd
from fpdf import FPDF
读取.dbf文件
table = dbfread.DBF('D:\pythonProject\mmse.dbf')
df = pd.DataFrame(table)
class PDFTable(FPDF):
def init(self, dataframe):
super().init()
self.dataframe = dataframe
self.set_font("Arial", size=12) # 设置默认字体和字体大小
def table(self, dataframe):
col_width = [max([len(str(x)) for x in df[col]]) * 0.75 for col in dataframe.columns]
row_height = 10
for idx, row in dataframe.iterrows():
for i, (colname, cell) in enumerate(row.items()): # 修改此处为items()
# 转换为 Latin-1 编码
cell = str(cell).encode('latin-1', errors='ignore').decode('latin-1')
self.cell(col_width[i], row_height, cell, border=1)
self.ln()
# 新的一行开始时,跳过列标题
if idx == 0:
self.ln(sum(col_width))
# 写入列标题
self.set_y(20)
for i, colname in enumerate(dataframe.columns):
self.cell(col_width[i], row_height, colname, border=1, ln=1)
def generate_pdf(self, filename):
self.add_page()
self.table(self.dataframe)
self.output(filename)
创建 PDFTable 实例并生成 PDF 文件
pdf = PDFTable(df)
pdf.generate_pdf('mmse.pdf')
呈现效果如图片。感觉代码是不是还是有问题,请问应该怎样修改呀?
