#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.