方法一:styleframe库
writer = pd.ExcelWriter(filePath)columns = df.columns.tolist()sf = StyleFrame(df)sf.to_excel(writer, sheet_name=shtnames[i], index=False, best_fit=columns, columns_and_rows_to_freeze='B2', row_to_add_filters=0,)writer.save() # 写入硬盘
缺点:调整的列宽比列最大长度还要大一些
styleframe对象特有方法:
- best_fit=columns: 需要自动调整列宽的列
- columns_and_rows_to_freeze=’B2’: 冻结窗口的位置
row_to_add_filters=0: 添加筛选按钮,0表示是,1表示否
方法二:把列最大长度设为列宽
writer = pd.ExcelWriter(xlsFilepath, engine='xlsxwriter')# 写excel文件使用pandas to_excelmy_dataframe.to_excel(writer, startrow = 1, sheet_name='Sheet1', index=False)workbook = writer.bookworksheet = writer.sheets['Sheet1']# 遍历每一列并设置width ==该列的最大长度。填充长度也增加了2。for i, col in enumerate(my_dataframe.columns):# 求列I的长度column_len = my_dataframe[col].astype(str).str.len().max()# 如果列标题较大,则设置长度# 大于最大列值长度column_len = max(column_len, len(col)) + 2# 设置列的长度worksheet.set_column(i, i, column_len)writer.save()
报错:AttributeError: ‘Worksheet’ object has no attribute ‘set_column’
可能出现的所有原因:https://blog.csdn.net/qq_39691492/article/details/119757362保存的文件类型不是 .xlsx
- 未安装 xlsxwriter
- 最新openpyxl的删除了对应方法
- openpyxl版本问题
缺点:当列标题为最大长度时,列宽调整失败
