如何将多个DataFrame写入Excel文件的不同工作表中

本文详解如何使用pandas的excelwriter(配合openpyxl引擎)将多个dataframe分别写入同一excel文件的多个独立工作表,避免数据覆盖,并提供完整可运行代码与关键注意事项。

在实际数据分析与报表生成场景中,常需将来自不同模块或程序的多个DataFrame汇总到一个Excel工作簿中,每个DataFrame对应一个独立工作表(如“Sheet1”、“Sheet2”等)。但若直接多次调用pd.ExcelWriter且未正确配置模式与引擎,极易导致前序写入被覆盖——这正是原始问题的核心痛点。

根本原因在于:默认的xlsxwriter引擎不支持追加(append)模式,而mode='a'仅对openpyxl有效。因此,第一步必须明确指定引擎并确保依赖已安装:

pip install openpyxl

✅ 正确做法是:统一使用openpyxl作为引擎,以追加模式(mode='a')打开文件,并为每个程序分配唯一的工作表名。例如,4个程序分别写入 'ProgramA'、'ProgramB'、'ProgramC'、'ProgramD' 四个sheet:

import pandas as pd

# 假设 df_list 是当前程序生成的多个DataFrame列表
df_list = [df_a, df_b, df_c]  # 示例:3个DataFrame
sheet_name = "ProgramA"  # 每个程序使用固定且互不冲突的sheet名
output_path = r"Y:\HedgeFundRecon\JAron\Output\JAronOutput.xlsx"

with pd.ExcelWriter(
    output_path,
    engine='openpyxl',
    mode='a',                    # 关键:追加模式,不覆盖整个文件
    if_sheet_exists='replace',   # 若同名sheet已存在,则替换(安全兜底)
    datetime_format='mm/dd/yy'
) as writer:
    row_pos = 1
    for df in df_list:
        df.to_excel(writer, sheet_name=sheet_name, startrow=row_pos, index=False)
        row_pos += len(df) + 2  # 留2行空隙,便于阅读

? 关键要点说明

笔灵AI论文写作

免费生成毕业论文、课题论文、千字大纲,几万字专业初稿!

下载

  • mode='a':仅openpyxl支持,表示“打开现有文件并追加内容”,不会清空其他sheet;
  • if_sheet_exists='replace':当同名sheet已存在时自动替换(避免ValueError: Sheet 'XXX' already exists),也可设为'overlay'实现叠加写入(需手动控制startrow);
  • 工作表名必须唯一:4个程序务必使用不同sheet_name(如'JAron'、'Bloomberg'、'Refinitiv'、'Internal'),否则后写入的会覆盖先写入的;
  • 避免并发写入:若多个程序同时运行并写入同一文件,可能引发IO异常或数据损坏。建议通过文件锁、时间戳命名或集中调度机制规避;
  • 路径中的反斜杠\需用原始字符串r"..."或双反斜杠\\转义,防止转义字符错误。

? 进阶提示:若需动态创建sheet名(如按日期或程序ID),可结合datetime.now().strftime("%Y%m%d_%H%M")生成唯一标识;若需校验sheet是否存在再决定操作逻辑,可通过writer.book.sheetnames获取当前所有sheet列表。

综上,只要统一使用openpyxl引擎 + mode='a' + 唯一sheet名,即可稳健、高效地实现多程序协同输出至单个Excel多工作表的目标。

相关推荐:

华为鸿蒙 HarmonyOS API 设备量占比数据更新:7.0.0 Beta1 突破 0.17%,5.0 多个版本归零

7 月 2 日消息,华为开发者官网更新了存量设备 API 版本使用数量参考,截止 2026 年 6 月 19 日,HarmonyOS 设备各 API 版本使用量占比如下(数据约 15 天进行一次更新,开发者可根据占比来为应用合理定义需要兼容的 API 版本):HarmonyOS 版本API 版本设备量占比7.0.0 Beta126.0.0 Beta10.17%6.1.16.1.1(24)34.40...

惠普战 99 Air 酷睿版 2026 新增多个配置,9499 元起

感谢网友 软媒新友2280005 的线索投递! 7 月 1 日消息,惠普 5 月底推出的战 99 Air 笔记本电脑在最近三天内上架了多款新配置,汇总如下:14 英寸酷睿 Ultra 5 325 处理器、16GB 内存、1TB 固态硬盘:9499 元酷睿 Ultra X7 358H 处理器、32GB 内存、1TB 固态硬盘:11999 元酷睿 Ultra 5 338H 处理器、32GB 内存、1T...

如何将Figma图层按逻辑顺序重命名_利用Rename It插件的升序排列功能

Figma中图层命名混乱可借助Rename It插件实现升序重命名:一、安装并启动插件;二、按选中顺序编号;三、按坐标或嵌套层级自动排序;四、按类型和名称条件筛选后编号。 如果您在figma中处理大量图层,发现图层名称混乱、缺乏规律,导致难以快速识别层级关系或协作时产生歧义,则可能是由于图层命名未遵循统一逻辑顺序。以下是利用rename it插件实现升序排列重命名的具体操作步骤: 一、安装并启动R...

准雨天气如何设置多个小插件共存

准雨天气支持在安卓12及以上系统添加多个不同城市或样式的桌面插件,需通过系统小工具入口逐个添加并单独设置城市;Android 11及以下部分机型不支持叠加,需先移除旧插件。 准雨天气支持在手机桌面添加多个不同城市或样式的天气小插件,但必须通过系统级小组件入口逐个添加,不能在App内批量设置。 先确认手机系统是否支持多插件 安卓12及以上版本(如OriginOS 4.0、ColorOS 14、MIU...

谷歌浏览器如何禁止网页调用Clipboard_Write_谷歌浏览器防自动写入剪贴板

禁止网页调用 Clipboard.write 有五种独立管控方法:一、禁用特定网站剪贴板权限;二、全局关闭所有网站剪贴板写入;三、通过启动参数禁用 ClipboardImageWrite;四、用 Tampermonkey 脚本劫持 write 行为;五、禁用实验性 Web 平台功能以移除 clipboard API。 如果您发现网页在未获明确许可的情况下调用 navigator.clipboard...

UC浏览器电脑版怎么设置多个用户相互独立的数据配置?

UC浏览器电脑版通过内置多用户管理实现物理隔离:每个用户拥有独立Cookie、下载目录和书签,不共享数据;添加用户时不填手机号可避免云绑定;切换用户后地址栏变色、底部显示标识,且登录账号不跨用户可见;仅主动绑定UC账号并开启指定同步项才上传数据。 UC浏览器电脑版需要为不同用途(如工作账号、私人账号、测试环境)创建互不读取Cookie、不共享下载目录、不交叉同步书签的独立数据空间,才能真正实现浏览...

Excel怎么批量重命名工作表 快速修改多个Sheet名称技巧

推荐VBA宏批量重命名:用Array写死名称适合10个以内;从单元格读取更稳妥,增强版可防重名和超长;Kutools插件三步可视化操作;快捷键组合(Alt+H>O>R→Enter→Ctrl+Page Down)适合少量人工核对。 你需要一次性把Excel里十几个工作表的默认名称“Sheet1”“Sheet2”……改成“销售部日报”“采购部周报”“库存月结”等业务化名称,但挨个双击重命名...

谷歌浏览器如何配置启动时自动打开多个固定页面_谷歌浏览器工作流初始状态恢复

谷歌浏览器可通过五种方式实现启动时自动打开多个网页并固定标签页:一、在“启动时”设置中添加多个网址;二、手动右键固定已加载标签页;三、启用chrome://flags/#enable-tab-freeze-and-discard实验标志以持久化固定状态;四、安装Pin Tabs Manager等扩展自动固定匹配URL的标签页;五、修改快捷方式参数添加--new-window及多个网址。 你每天打开...