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

如何将多个DataFrame导出到同一Excel文件的不同工作表?

问题原因

你当前的两种写法都会每次循环覆盖整个Excel文件,导致只有最后一次写入的工作表被保留:

  • 第一种写法:循环内每次新建pd.ExcelWriter并立即关闭,每次都会重新创建文件覆盖之前的内容
  • 第二种写法:循环内每次用with打开文件,同样会覆盖原有文件,仅保留当前循环写入的工作表
正确实现方式

需要将pd.ExcelWriter的创建放在循环外部,一次性打开文件后写入所有工作表,最后统一关闭(或由with自动管理)。

写法1:手动管理Writer

# 先创建Writer对象
writer = pd.ExcelWriter(save_file.get(), engine='xlsxwriter')
# 循环写入所有DataFrame到对应工作表
for df, sheet_name in zip(dfs, sn):
    df.to_excel(writer, sheet_name=sheet_name, index=False)
# 关闭Writer完成写入
writer.close()

写法2:用with语句自动管理(推荐)

# 用with打开Writer,循环写入所有工作表
with pd.ExcelWriter(save_file.get()) as writer:
    for df, sheet_name in zip(dfs, sn):
        df.to_excel(writer, sheet_name=sheet_name, index=False)
# with块结束后自动关闭Writer,无需手动调用close

补充说明

用zip(dfs, sn)替代索引循环,代码更简洁易读,同时避免索引越界风险。

内容的提问来源于stack exchange,提问作者verynovice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:22:37