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

Pandas导出DataFrame到Excel时自定义日期时间格式不生效

问题原因

pandas 在写入 datetime 类型数据到 Excel 时,会为每个 datetime 单元格单独设置默认格式(包含微秒的 yyyy-mm-dd hh:mm:ss:microseconds 样式),这种单元格级别的格式优先级高于列级别格式,所以你通过 set_column 设置的列格式只会对无单独格式的单元格(比如空行、表头行)生效,数据行的格式不会被覆盖。

解决方案

方案一:直接在 ExcelWriter 中指定 datetime 格式(推荐)

这是最简便的实现方式,让 pandas 自动按指定格式写入 datetime 列,同时保留 datetime 类型,Excel 可正常识别为日期时间数值:

with pd.ExcelWriter('outputfile.xlsx', engine='xlsxwriter', datetime_format='dd-mm-yy hh:mm:ss') as writer:
    df.to_excel(writer, sheet_name='Sheet_1', index=False, startrow=2)

方案二:手动覆盖数据行的单元格格式

如果需要更灵活的格式定制,可以为数据行单独应用自定义格式:

with pd.ExcelWriter('outputfile.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='Sheet_1', index=False, startrow=2)
    
    workbook = writer.book
    worksheet = writer.sheets['Sheet_1']
    datetime_format = workbook.add_format({'num_format':'dd-mm-yy hh:mm:ss'})
    
    # 数据起始行:表头在startrow=2,数据从第3行(索引3)开始
    start_data_row = 2 + 1
    # 遍历所有数据行的A列,重新写入并指定格式
    for row_idx in range(len(df)):
        excel_row = start_data_row + row_idx
        worksheet.write(excel_row, 0, df.iloc[row_idx]['datetime'], datetime_format)
    
    # 为列设置默认格式(处理后续新增行)
    worksheet.set_column('A:A', None, datetime_format)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:30:58