如何在openpyxl中应用条件格式?

时间:2016-03-30 11:42:45

标签: python python-3.x openpyxl

我使用 openpyxl 来操作Microsoft Excel工作表。

我想要做的是添加条件格式规则,如果行号为偶数,则使用给定颜色填充行,否则将行留空。

在Excel中,可以通过选择所有工作表,使用文字=MOD(ROW();2)=0=EVEN(ROW()) = ROW()创建新的格式规则来完成此操作。

我尝试使用以下代码行来实现此行为(例如考虑前10行):

redFill = PatternFill(start_color='EE1111', end_color='EE1111', fill_type='solid')
ws2.conditional_formatting.add('A1:A10', FormulaRule(formula=['MOD(ROW();2) = 0'], stopIfTrue=False, fill=redFill))

我的程序运行正常但是当我尝试打开输出的Excel文件时,它告诉我该文件包含不可读的内容,它会询问我是否要恢复工作表内容。单击是,工作表是我所期望的,但没有格式化。

在openpyxl中应用这种格式的正确方法是什么(可能是整个工作表)?

1 个答案:

答案 0 :(得分:1)

不幸的是,条件格式处理公式的方式特别不透明。最好的办法是创建一个具有相关条件格式的文件,并通过解压缩来检查相关文件。规则存储在相关的工作表文件和样式文件中的格式中。

但是,我怀疑这个问题可能只是因为你正在使用&#34 ;;"分离函数中的参数:必须始终使用逗号。

我的一个项目中的示例公式:

green_text = Font(color="006100")
green_fill = PatternFill(bgColor="C6EFCE")
dxf2 = DifferentialStyle(font=green_text, fill=green_fill)
r3 = Rule(type="expression", dxf=dxf2)
r3.formula = ["AND(ISNUMBER(C2), C2>=400)"]
相关问题