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

