我有一个代码,我使用tabula-py
从pdf中读取表格,然后将dataframes
的结果列表写入一个单独的excel中,每个dataframe
都在单独的工作表中。
以下是我的当前代码:
def read_pdf(pdf_file):
output_filepath = "output.xlsx"
dfs = tabula.read_pdf(pdf_file, pages='all')
for i in range(len(dfs)):
print(dfs[i].to_string())
with ExcelWriter(output_filepath) as writer:
dfs[i].to_excel(writer, sheet_name='sheet%s' % i)
使用print函数,我可以看到dataframes
的值,但生成的excel是空的,只有一个工作表,没有输出。
2条答案
按热度按时间watbbzwu1#
您在循环中多次打开ExcelWriter对象,这可能会导致覆盖以前的数据。应将with语句移到循环之外,以便只打开ExcelWriter对象一次。Something like that:
我使用了engine= 'xlswriter',因为它的性能更好,而且它支持比默认引擎更高级的特性。最后,我在循环外添加了“writer保存”,以便在写入后保存Excel文件。如果你不需要它,你可以删除它。
yi0zb3m42#
你需要反转 for-loop <=> context-manager: