Выравнивание колонок в Excel при помощи openpyxl

Есть такой код, выполняющий выравнивание ячеек определенных столбцов по центру в горизонтали:

book = openpyxl.load_workbook(filename="Результат.xlsx")
sheet = book.active
letter_list = ["B", "C", "D", "E", "F", "G"]
for letter in letter_list:
    sheet[f"{letter}" + str(range(1, df.shape[0] + 1))].alignment = Alignment(horizontal="center")
book.save("Результат.xlsx")

# в данном примере - 57 строк и 7 колонок, однако "A" - не задействуется

Однако, в ответ мне выдаёт ошибку:

ValueError: Brange(1, 57) is not a valid coordinate or range

Я понимаю, что мне нужно изменить Brange (better range) на стандартный range (хотя я не уверен, что это может решить эту проблему). Как я могу это сделать или есть другой способ исправить эту проблему?


Ответы (1 шт):

Автор решения: Сергей Кох

Наверное вы таким образом sheet[f"{letter}" + str(range(1, df.shape[0] + 1))].alignment = Alignment(horizontal="center") хотели создать List comprehension? Если вы хотите выровнить только эту область столбцов, то можно цикл записать так:

for letter in letter_list:
    for i in range(1, df.shape[0] + 1):
        sheet[f"{letter}{i}"].alignment = Alignment(horizontal="center")

Если вам нужно/можно полностью отформатировать данные колонки, то эдак:

for letter in letter_list:
    col = sheet.column_dimensions[f'{letter}']
    col.alignment = Alignment(horizontal="center")
→ Ссылка