Как установить границы в объедененной ячейке(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

→ Ссылка