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

如何将pandas DataFrame写入现有Excel模板,保留标题表头并指定位置插入另存

解决方法:保留Excel模板内容并追加DataFrame

你的代码目前会直接覆盖原模板文件,而且没指定DataFrame的写入位置,导致标题和表头被冲掉。咱们调整下代码,就能实现保留模板内容、从A6单元格开始插入数据的需求:

核心问题分析

  • 原代码没有把加载好的模板工作簿关联到ExcelWriter,导致直接覆盖了原文件内容
  • 缺少写入位置的指定,DataFrame默认从第一行开始写入,会覆盖模板里的标题和表头

修正后的完整代码

import pandas as pd
from openpyxl import load_workbook

# 示例DataFrame
df = pd.DataFrame({'a':[1,3,5,7,4,5,6,4,7,8,9], 'b':[3,5,6,2,4,6,7,8,7,8,9]})

# 加载模板文件
template_path = "C:/template.xlsx"
book = load_workbook(template_path)

# 初始化ExcelWriter,关联已加载的工作簿,设置正确的写入模式
with pd.ExcelWriter(template_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
    # 从第6行开始写入(startrow是0索引,5对应Excel的第6行),不输出索引
    df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=5)

关键细节说明

  • engine='openpyxl':必须指定这个引擎,因为我们用openpyxl加载了.xlsx格式的模板
  • mode='a':以追加模式打开文件,不会清空原模板的内容
  • if_sheet_exists='overlay':当目标工作表存在时,仅覆盖指定位置的内容,保留模板里的标题、表头
  • startrow=5:pandas的行索引从0开始计数,所以5对应Excel的第6行(A6单元格),正好衔接在A5:B5的表头下方

如果不想修改原模板文件,可以先复制一份模板到result.xlsx路径,再对副本执行上述操作,最终就能得到符合要求的新文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:42