Как поменять цвет в ячейке с помощью openpyxl

Мне нужно в существующем файле .xlsx поменять только цвет текста определенной ячейки. Использовал такой код:

import openpyxl as opx
wb = opx.load_workbook('pattern.xlsx')
ws = wb.active
ws["A3"].font = opx.styles.Font(color='0070C0')
wb.save('pattern.xlsx')

Но это кроме цвета меняет и все остальное - название шрифта, размер и т.д. на значения по умолчанию. Подскажите, как оставить остальные параметры не тронутыми.


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

Автор решения: vadim vaduxa

PatternFill

wb = openpyxl.Workbook()
cell = wb.active.cell(column=1, row=1)

cell.fill = openpyxl.styles.PatternFill(start_color='0070c1', end_color='0070c1', fill_type='solid') 

cell.font = openpyxl.styles.Font(color='312BED', bold=False, italic=True, size=11)
→ Ссылка
Автор решения: Evgen Litvinov

Разобрался! Чтобы поменять цвет шрифта, нужно указывать все параметры иначе они установятся в значения по умолчанию:

<openpyxl.styles.fonts.Font object>
Parameters:
name=None, charset=None, family=None, b=False, i=False, strike=None, outline=None, shadow=None, condense=None, color=None, extend=None, sz=None, u=None, vertAlign=None, scheme=None

В моем случае получилось так:

ws[f'A3'].font = opx.styles.Font(name='Arial Cyr', charset=204, family=2.0, b=True, color='0070C0', sz=8.0)
→ Ссылка