将 .DBF 转换为 .csv 时出现 BadDataError

BadDataError when converting .DBF to .csv

我正在尝试使用 Python3 将 .DBF 文件转换为 .csv。我正在尝试使用 dbf 库 (https://pypi.python.org/pypi/dbf)

import dbf 

def dbf_to_csv(dbf_file_name, csv_file_name):
    dbf_file = dbf.Table(dbf_file_name, ignore_memos=True)
    dbf_file.open() 
    dbf.export(dbf_file, filename = csv_file_name, format='csv', header=True)

我正在使用的 DBF 文件可以在 Excel 中打开并且看起来没问题。但是,当我 运行 上面的方法时,我在上面的 dbf.export 行得到一个错误:

dbf.ver_33.BadDataError: record data is not the correct length (should be 1442, not 1438)

dbf 文件在 Excel 中可以正常打开,但是,我需要自动执行此转换。我应该做些什么不同的事情来获得这种从 .DBF 文件创建 pdf 的方法?

如果文件在 Excel 中打开正确,那么我建议您使用 Excel 为您转换为 csv 格式,如下所示:

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')

wb = excel.Workbooks.Open(r"input.dbf")
excel.DisplayAlerts = False
wb.DoNotPromptForConvert = True
wb.CheckCompatibility = False
wb.SaveAs(r"output.csv", FileFormat=6, ConflictResolution=2)
excel.Application.Quit()

不要忘记添加所需文件的完整路径。注意,FileFormat=6 告诉 Excel 以 CSV 格式保存文件。

要将工作簿导出为 PDF,您可以使用:

wb.ExportAsFixedFormat(0, r"output.pdf")

如果您还没有安装 win32com,您应该可以使用以下软件:

pip install pypiwin32

此解决方案仅适用于 Windows 安装。