2016-08-26 3 views
0

Я хочу применять форматы к excel ячейкам (изменять шрифты по умолчанию и заполнять ячейки). Я могу установить атрибуты ячеек один на один:Openpyxl - создавать стили как переменные

from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, Color 

ws1.cell(row=1,column=1).font=Font(color=colors.WHITE,size=9) 
ws1.cell(row=1,column=1).fill=PatternFill(fill_type="solid", start_color='0000FF', end_color='0000FF') 
...and so on 

Есть ли более эффективный способ сделать это, создавая стили шаблонов, так что я могу только написать что-то вроде

ws1.cell(row=1,column=1).style=TemplateStyle 
+0

Это будет возможно в openpyxl версии 2.4 –

+0

Вы случайно взглянули на раздел «Слияние объединенных ячеек» на http://openpyxl.readthedocs.io/en/latest/styles.html? по крайней мере, выглядит альтернативой стилизации отдельных ячеек. – BenWS

+0

@BenWS Я проверил эту часть, но я получил только часть стилизации каждого отдельного атрибута. Я знаю, как перебирать ячейки, но я также пытаюсь сделать код более эффективным, создав шаблон стиля, а не только шаблоны/переменные атрибутов, если это возможно. Я пропустил что-нибудь на этой странице? –

ответ

0

Может «именованных стилей '- вариант. Я думаю, что это то, о чем говорил @ Чарли Кларк. Вы можете найти довольно ограниченное объяснение на openpyxl 2.4.0 documentation

Это может выглядеть примерно так.

from openpyxl.styles import NamedStyle, Font, PatternFill 

template_style = NamedStyle(name="template_style") 
template_style.font = Font(color=colors.WHITE,size=9) 
template_style.fill = PatternFill(fill_type="solid", start_color='0000FF', end_color='0000FF') 

ws1.cell(row=1, column=1).style = template_style 

Я не уверен, как ссылаться на имя внутри скобок NamedStyle, но я знаю, что она не должна быть такой же, как переменной, к которой он связан. Поскольку документация использует одно и то же имя для переменной и имя в скобках, я выбираю сделать то же самое.

Смежные вопросы