You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:12:37