Я предполагаю, что вы пытаетесь применить стиль ячейки к типу ' list ', а не к типу ' openpyxl.cell.cell.Cell '.
Ниже приведен фрагмент добавления стилей с использованием openpyxl в предположениях:
- current_line: список чего-либо.
- Заголовок Только строка 1.
- версия: Python 3.8.1
from openpyxl import load_workbook
from openpyxl.styles import Border, Side, Font
wb = load_workbook(filename="sample.xlsx", read_only=False)
ws = wb.active
data = [["H1", "H2", "H3", "H4", "H5", "H6"],[1,2,3,4,5,6,7],[11,12,13],[21,22,23,24,25,26,27],[31,32],[41,42,43,44,45],[51,52]]
cell_border = Border(left=Side(border_style='thin', color='FF000000'),
right=Side(border_style='thin', color='FF000000'),
top=Side(border_style='thin', color='FF000000'),
bottom=Side(border_style='thin', color='FF000000')
)
n_rows = len(data)
for row in range(1, n_rows + 1):
n_cols = len(data[row-1])
ws.append(data[row-1])
for col in range(1, n_cols + 1):
cell = ws.cell(row, col)
cell.border = cell_border
if row == 1: # Header Style
cell.font = Font(bold=True)
wb.save("sample.xlsx")
Вы можете изменить в соответствии с вашими требованиями. Надеюсь, это поможет.
Обновление:
max_rows = 0
max_cols = 0
for line in inf:
current_line = line.strip().split(';')
ws.append(current_line)
max_rows += 1
row_size = len(current_line)
if row_size > max_cols:
max_cols = row_size
for row in range(1, max_rows + 1):
for col in range(1, max_cols + 1):
cell = ws.cell(row, col)
cell.border = cell_border
if row == 1: # Header Style
cell.font = Font(bold=True)
Подробнее о openpyxl форматировании ячеек здесь .