Python使用pandas导出多Excel工作表时如何自动适配列宽
解决方案
核心问题
- 原代码列宽调整逻辑在分组循环外部,循环结束后变量
index仅保留最后一个分组的取值,导致只有最后一个工作表完成列宽设置,其余工作表均未处理 - 全局
stacked_df计算的列宽无法精准适配每个分组内的实际内容长度
修改后代码
# 筛选Error值为1的行生成最终DataFrame final_df = stacked_df[stacked_df.Error == 1] # 初始化XlsxWriter引擎的Excel写入器 writer = pd.ExcelWriter(LOGNAME, engine='xlsxwriter') # 按Service type列分组,每个分组写入单独工作表 for index, group_df in final_df.groupby("Service type"): sheet_name = str(index) group_df.to_excel(writer, sheet_name=sheet_name, index=False) # 对当前工作表逐列调整宽度 for col_idx, column_name in enumerate(group_df.columns): # 计算列所需最大宽度:取列名长度、列内容最大长度的最大值 max_len = max( group_df[column_name].astype(str).map(len).max(), len(column_name) ) # 若表格含大量中文字符,可乘以1.2~1.5的系数适配宽度,取消下行注释即可 # max_len = int(max_len * 1.3) # 设置当前列宽度 writer.sheets[sheet_name].set_column(col_idx, col_idx, max_len) # 保存并关闭写入器 writer.save()
优化说明
- 列宽调整逻辑移入分组循环,确保所有工作表都完成列宽设置
- 基于当前分组的实际内容计算列宽,适配精度更高
- 预留中文字符宽度适配配置,可根据实际内容调整系数避免截断
内容的提问来源于stack exchange,提问作者miquiztli_
相关产品推荐
相关产品推荐

