如何在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中应用这种格式的正确方法是什么(可能应用于整个工作表)?

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

然而,我怀疑这个问题可能只是因为您使用";"来分隔函数中的参数:您必须始终使用逗号。

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

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)"]

最新更新