将Pandas DataFrame列表写入同一Excel不同Sheet时出现空表问题
问题分析与修复
你的代码核心问题是循环内部重复创建ExcelWriter实例:每次循环都会重新打开并覆盖整个Excel文件,之前写入的Sheet会被清空,最终只剩最后一次循环生成的Sheet;同时重复创建的操作也可能导致数据未正确写入,出现空Sheet的情况。
修复后的代码
from pandas import ExcelWriter import tabula def read_pdf(pdf_file): output_filepath = "output.xlsx" dfs = tabula.read_pdf(pdf_file, pages='all') # 只创建一次ExcelWriter,在循环外管理文件句柄 with ExcelWriter(output_filepath) as writer: for i, df in enumerate(dfs): print(df.to_string()) df.to_excel(writer, sheet_name=f'sheet{i}')
关键改动说明
- 将
ExcelWriter的上下文管理器(with块)移到循环外部,确保只打开一次Excel文件,所有Sheet都写入同一个文件中,不会互相覆盖。 - 使用
enumerate遍历DataFrame列表,更简洁地获取索引和对应DataFrame。 - 确保每个DataFrame都通过同一个
writer实例写入,保证所有Sheet都能被正确保存到文件中。
内容的提问来源于stack exchange,提问作者user2966197
相关产品推荐
相关产品推荐

