如何修复自定义格式化函数批量导出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
相关产品推荐
相关产品推荐

