我正在使用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)"]