openpyxl — Найдите максимальную длину ячейки для каждого столбца

#python #excel #openpyxl

Вопрос:

Это мой первый раз, когда я использую openpyxl. Я хочу знать размер самой длинной ячейки для каждого столбца в Excel. Я изо всех сил старался написать код, но вывод находится в строке, и даже это выходит неправильно. Как я могу исправить то, что я хочу? Если вы знаете, пожалуйста, ответьте, спасибо

 import openpyxl

filepath = "test.xlsx"

wb = openpyxl.load_workbook(filepath)

ws = wb.active

max_row = ws.max_row
max_column = ws.max_column


for i in range(1, max_row   1):
    max_length = 0
    for j in range(1, max_column   1):
        try:
            if len(str(ws.cell(row=i, column=j).value)) > max_length:
                max_length = len(ws.cell(row=i, column=j).value)
        except:
            pass
    print(max_length)
 

Комментарии:

1. Сначала вы перебираете строки, затем столбцы. Все должно быть наоборот.

2. Воспользуйся ws.iter_cols()

Ответ №1:

Ну, вы можете использовать ws.iter_cols() , например, @CharlieClark, упомянутый в комментариях. Вот пример:

 maxLen = float('-inf')
columns = sht.iter_cols(2, 2) # The (2, 2) is the mincol to maxcol, including the max column itself, e.g. if you want to iterate through column 7, you do (7, 7)
for col in columns:
    for cellRow in col: #cellRow is the specific cell, not its value
        maxLen = len(cellRow.value) if len(cellRow.value) > maxLen else maxLen #Sets maxLen to the length of cellRow.value if it is larger than maxLen.