nihbf 2024-03-10 20:13 采纳率: 8.3%
浏览 3

.dbf文件格式转化

你好,上面的代码运行出来版本上有个问题。修改之后再运行无错误,但是导出来的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')

呈现效果如图片。感觉代码是不是还是有问题,请问应该怎样修改呀?

img

  • 写回答

4条回答 默认 最新

  • 关注

    可以直接找.dbf文件转换pdf工具,代码的话每个需要对应每个dbf文件的表格或者其他排列的形式,很麻烦

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日