如何将多个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
相关产品推荐
相关产品推荐

