Как установить границы в объедененной ячейке(openpyxl)
Подскажите как установить граници в объедененной ячейке. в интернете рылся, код не работает, граница устанавливается только на верхнюю левую ячейку B2.
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.merge_cells('B2:F4')
top_left_cell = ws['B2']
top_left_cell.value = "My Cell"
thin = Side(border_style="thin", color="000000")
double = Side(border_style="thin", color="ff0000")
top_left_cell.border = Border(top=double, left=thin, right=thin, bottom=double)
top_left_cell.fill = PatternFill("solid", fgColor="DDDDDD")
top_left_cell.fill = fill = GradientFill(stop=("000000", "FFFFFF"))
top_left_cell.font = Font(b=True, color="FF0000")
top_left_cell.alignment = Alignment(horizontal="center", vertical="center")
wb.save("styled.xlsx")
Ответы (1 шт):
Автор решения: Сергей Кох
→ Ссылка
Проблема старая https://foss.heptapod.net/openpyxl/openpyxl/-/issues/365. Пример в документации так и не обновили за три года. Просто надо объединять ячейки, только после полного форматирования левой верхней ячейки. Повторю здесь решение, может кто-то быстрей найдет его.
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
top_left_cell = ws['B2']
top_left_cell.value = "My Cell"
thin = Side(border_style="thin", color="00ff00")
double = Side(border_style="double", color="ff0000")
top_left_cell.border = Border(top=double, left=thin, right=thin, bottom=double)
top_left_cell.fill = PatternFill("solid", fgColor="DDDDDD")
top_left_cell.fill = fill = GradientFill(stop=("000000", "FFFFFF"))
top_left_cell.font = Font(b=True, color="FF0000")
top_left_cell.alignment = Alignment(horizontal="center", vertical="center")
ws.merge_cells('B2:F4')
wb.save("styled.xlsx")
https://foss.heptapod.net/openpyxl/openpyxl/-/issues/365#:~:text=I%20believe%20the%20example