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

如何修复自定义格式化函数批量导出DataFrame至Excel的异常

批量导出格式化DataFrame到Excel的修复方案

问题原因分析

你遇到的异常是两个明确错误导致的:

  • 文件名参数未生效:在pd.ExcelWriter里写死了字符串r'file_name.xlsx',没有使用传入的file_name参数,导致每次循环都在覆盖同一个文件,最终只剩最后一次写入的内容。
  • 函数名冲突:用Python内置函数format作为自定义函数名,这会覆盖内置功能,可能引发逻辑异常。

修复后的完整代码

import pandas as pd

# 重命名函数,避免与内置format函数冲突
def export_formatted_excel(df, file_name):
    # 使用传入的file_name参数,不再写死固定文件名
    with pd.ExcelWriter(file_name, engine='xlsxwriter') as writer:
        df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)
        workbook = writer.book
        worksheet = writer.sheets['Sheet1']
        
        # 设置默认单元格格式
        workbook.formats[0].set_font_size(12)
        workbook.formats[0].set_align('right')
        
        # 定义表头格式
        header_format = workbook.add_format({
            'bold': True,
            'border': 0
        })
        header_format.set_font_size(14)
        header_format.set_align('center')
        
        # 写入自定义表头
        for col_num, value in enumerate(df.columns.values):
            worksheet.write(0, col_num, value, header_format)

# 待处理的DataFrame列表
df_list = [df1, df2, df3, df4, df5, df6]

# 循环生成对应名称的Excel文件
for i, df in enumerate(df_list):
    # 如需指定存储路径(比如原代码中的N:\),直接在文件名前拼接即可
    export_formatted_excel(df, fr"N:\Excel-file{i+1}.xlsx")

可选调整:给第一个文件生成无后缀名称

如果需要给列表第一个DataFrame生成Excel-file.xlsx(不带数字后缀),可以修改循环逻辑:

for i, df in enumerate(df_list):
    if i == 0:
        file_name = r"N:\Excel-file.xlsx"
    else:
        file_name = fr"N:\Excel-file{i}.xlsx"
    export_formatted_excel(df, file_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:25:37