

相信大家在写一些关于表格的脚本中,经常会遇到处理完之后,表格的列宽没有自动设置,看起来效果不佳,或者,需要看这个表的人会觉得体验不好等等。那么我们就会想要自动设置列宽来解决这一痛点。
如何实现呢?下面我分为两个版本来解决这个问题:
影刀版
下面只做了单个sheet的,若要设置全部sheet的,可以获取所有sheet,然后循环来设置列宽

python版
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
import pandas as pd
def reset_col(filename):
wb = load_workbook(filename)
for sheet in wb.sheetnames:
ws = wb[sheet]
df = pd.read_excel(filename, sheet).fillna('-')
if not df.empty:
df.loc[len(df)] = list(df.columns) # 把标题行附加到最后一行
for col in df.columns:
index = list(df.columns).index(col)
letter = get_column_letter(index + 1)
collen = df[col].apply(lambda x: len(str(x).encode())).max() # 获取这一列长度的最大值 当然也可以用min获取最小值 mean获取平均值
ws.column_dimensions[letter].width = collen * 1.1 + 4 # 这里我设置的是最大长度的1.1倍,可自行调整
wb.save(filename)