You need to enable JavaScript to run this app. 导出DataFrame到Excel时如何保留style.format设置的货币、百分比格式
优惠活动
大模型
产品
解决方案
定价
更多

导出DataFrame到Excel时如何保留style.format设置的货币、百分比格式

DataFrame导出Excel保留自定义格式解决方案

pandas的style.format方法默认仅作用于Jupyter等交互环境的渲染展示,不会直接写入Excel文件,要保留货币、百分比等自定义格式可使用以下两种方案:

方案一:使用Styler对象直接导出(适配pandas 1.3.0及以上版本)

调用Styler.to_excel()而非原生DataFrame的to_excel方法,同时指定支持样式导出的引擎即可:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    "商品名称": ["A","B","C"],
    "销售额": [1200.5, 3400.2, 2100.9],
    "同比增长率": [0.123, 0.278, -0.056]
})

# 配置样式
styled_df = df.style \
    .format({'销售额': '¥{:,.2f}', '同比增长率': '{:.2%}'})

# 导出到Excel,指定引擎为openpyxl或xlsxwriter均可
styled_df.to_excel("导出结果.xlsx", engine="openpyxl", index=False)

方案二:通过xlsxwriter指定列格式(兼容性更强)

该方案写入的是Excel原生单元格格式,后续编辑不会丢失格式,适配所有pandas版本:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    "商品名称": ["A","B","C"],
    "销售额": [1200.5, 3400.2, 2100.9],
    "同比增长率": [0.123, 0.278, -0.056]
})

# 创建Excel写入对象
writer = pd.ExcelWriter("导出结果.xlsx", engine="xlsxwriter")
df.to_excel(writer, sheet_name="数据", index=False)

# 获取工作簿、工作表实例
workbook  = writer.book
worksheet = writer.sheets['数据']

# 定义自定义格式
currency_format = workbook.add_format({'num_format': '¥#,##0.00'})
percent_format = workbook.add_format({'num_format': '0.00%'})

# 给对应列绑定格式,可同时设置列宽
worksheet.set_column('B:B', 15, currency_format) # 销售额列为B列
worksheet.set_column('C:C', 15, percent_format) # 同比增长率列为C列

# 保存文件
writer.close()

注意事项

  • 优先选择方案二,兼容性更高,不会出现样式丢失问题
  • 如果使用方案一出现样式丢失,可先升级openpyxl依赖到最新版本,旧版本对Styler导出的支持不完善

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 13:18:00