有条件地用Apache POI着色行
我是用Apache poi
API工作的,我想有条件地着色线,规则是5行后交替颜色:行1-5红,行6-10蓝,行11-15红。 等等。
这个规则:
ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule("MOD(ROW(),2)");
以不同的颜色交替排列。
我怎么能写我的规则?
你需要两个规则,一个是红色的,一个是蓝色的。 从ROW()
减1,使第11行变成10,第15行变成14,这样mod的结果小于5.另外,第10行变成9,mod大于或等于5,所以它会变成蓝色。 模式在10行之后重复,所以这就是mod操作数为10
的原因。
ConditionalFormattingRule red = sheetCF.createConditionalFormattingRule( "MOD(ROW() - 1, 10) < 5"); FontFormatting ffRed = red.createFontFormatting(); ffRed.setFontColorIndex(IndexedColors.RED.index); ConditionalFormattingRule blue = sheetCF.createConditionalFormattingRule( "MOD(ROW() - 1, 10) >= 5"); FontFormatting ffBlue = blue.createFontFormatting(); ffBlue.setFontColorIndex(IndexedColors.BLUE.index);
然后,您可以使用您的SheetConditionalFormatting
对象和相应的CellRangeAddress
将条件格式添加到工作表。
有关更多详细信息,请参阅条件格式快速指南 。
在我看来,以下(或类似的,可能与(ROW()+1)
或(ROW()-1)
而不是ROW()
)应该工作:
ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule("MOD(ROW() / 5,2)");