设置工作簿中所有工作表的列宽以在Python中自动调整

问题描述

我有一个python脚本,可以生成带有多张图纸的xlsx文件。对于每张纸,我想调整第一行的列宽(列标题)以自动调整。请帮助我了解如何通过xlsxwriter或openpyxl(如果可能的话,一个代码块遍历整个工作簿并自动调整每张纸的第一行)来完成此操作。

谢谢

解决方法

您不能只更改第一行的列宽,因为整个列的宽度必须相同。

因此,您需要遍历列的每个单元格以找出最长的值,然后将列宽设置为该数字(逐列,逐张)。

您可以在此处使用示例来计算每个单元格的长度:

import openpyxl

def cellLength():
    workBook = openpyxl.load_workbook('****.xlsx')
    for sheetName in workBook.sheetnames:
        sheet = workBook[sheetName]
        for columnNum in range(sheet.max_column):
            for rowNum in range(sheet.max_row):
                cellLength = len(str(sheet.cell(row = rowNum + 1,column = columnNum + 1).value))

然后将列宽设置为最长的单元格长度。

此外,宽度必须小于255。