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

