方法一: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_excel
my_dataframe.to_excel(writer, startrow = 1, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = 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版本问题
缺点:当列标题为最大长度时,列宽调整失败