如何自动设置excel的列宽?
评论
收藏

如何自动设置excel的列宽?

经验分享
凡星呀
2024-11-19 11:57·浏览量:466
凡星呀
影刀高级开发者
发布于 2024-11-19 11:57466浏览

相信大家在写一些关于表格的脚本中,经常会遇到处理完之后,表格的列宽没有自动设置,看起来效果不佳,或者,需要看这个表的人会觉得体验不好等等。那么我们就会想要自动设置列宽来解决这一痛点。

如何实现呢?下面我分为两个版本来解决这个问题:

影刀版

下面只做了单个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)


收藏2
全部评论1
最新
发布评论
评论