首页 > 解决方案 > Python:向 Excel 中添加“containsText”类型的条件格式

问题描述

我正在尝试在 Python 2.7 中使用 openpyxl (2.5.4) 将条件格式(包含管道字符的突出显示单元格)添加到 Excel。我尝试了许多代码变体,如下所示。都没有奏效。你能指出错误在哪里吗?

import openpyxl
from openpyxl import formatting, styles, Workbook

wb = openpyxl.load_workbook('export.xlsx')
sheet = wb['all']

red_text = Font(color='9C0006')
red_fill = PatternFill(bgColor='FFC7CE')

变体 1 - 代码

sheet.conditional_formatting.add('A1:E4', rule(type='containsText', operator='containsText', text='|', fill=red_fill, font=red_text))

变体 1 - 错误

NameError: name 'rule' is not defined

变体 2 - 代码

sheet.conditional_formatting.add('A1:E4', CellIsRule(type='containsText', operator='containsText', text='|', fill=red_fill, font=red_text))

变体 2 - 错误

TypeError: CellIsRule() got an unexpected keyword argument 'type'

变体 3 - 代码

sheet.conditional_formatting.add('A1:E4', formatting.rule.CellIsRule(type='containsText', operator='containsText', text='|', fill=red_fill, font=red_text))

变体 3 - 错误

TypeError: CellIsRule() got an unexpected keyword argument 'type'

变体 4 - 代码

sheet.conditional_formatting.add('A1:E4', formatting.rule.CellIsRule(operator='containsText', text='|', fill=red_fill, font=red_text))

变体 4 - 错误

TypeError: CellIsRule() got an unexpected keyword argument 'text'

标签: python-2.7openpyxl

解决方案


尝试以下操作:

from openpyxl.styles.differential import DifferentialStyle
from openpyxl import styles
from openpyxl.formatting.rule import Rule

red_colour = 'ffc7ce'
red_colour_font = '9c0103'

red_font = styles.Font(size=14, bold=True, color=red_colour_font)
red_fill = styles.PatternFill(start_color=red_colour, end_color=red_colour, fill_type='solid')

rule = Rule(type='containsText', text='|', stopIfTrue=True)
rule.dxf = DifferentialStyle(font=red_font, border=None, fill=red_fill)
ws.conditional_formatting.add('A1:E4', rule)

这是使用 openpyxl 3.0 版。

这就是我创建 textContains 条件格式规则的方式。


推荐阅读