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

Python中ExcelWriter追加DataFrame至现有工作簿遇问题求助

问题解决:追加工作表到现有Excel并生效日期格式

问题1:原有工作表被覆盖

你的代码存在语法错误:sheet_name = "new' 混用了双引号和单引号,会导致代码执行失败。即便修正引号后仍出现覆盖问题,可通过手动加载现有工作簿并关联到ExcelWriter的方式彻底解决,步骤如下:

  • 确保openpyxl版本≥3.0.0,避免兼容性问题
  • 不要在Excel打开目标文件的同时运行代码,防止文件锁定引发异常
  • 手动加载工作簿并关联,确保原有内容完整保留

修正后的基础代码:

import pandas as pd
from openpyxl import load_workbook

path = r'C:\...\myworkbook.xlsx'
# 加载现有工作簿
book = load_workbook(path)
with pd.ExcelWriter(path, mode='a', engine='openpyxl') as writer:
    # 将加载的工作簿关联到writer
    writer.book = book
    # 映射原有工作表,避免格式混乱
    writer.sheets = {ws.title: ws for ws in book.worksheets}
    df.to_excel(writer, sheet_name="new", index=False)

问题2:日期格式未生效

date_format参数对openpyxl引擎支持有限,推荐以下两种可靠方案:

方案1:使用datetime_format参数替换date_format

该参数针对日期类型数据的格式设置更有效:

import pandas as pd
from openpyxl import load_workbook

path = r'C:\...\myworkbook.xlsx'
book = load_workbook(path)
with pd.ExcelWriter(path, mode='a', engine='openpyxl', datetime_format="YYYY-MM-DD") as writer:
    writer.book = book
    writer.sheets = {ws.title: ws for ws in book.worksheets}
    df.to_excel(writer, sheet_name="new", index=False)

方案2:导出前转换日期列格式

直接将DataFrame中的日期列转为指定格式的字符串:

# 假设日期列名为'date_column'
df['date_column'] = df['date_column'].dt.strftime('%Y-%m-%d')

# 执行上述追加工作表的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:25:21