有条件地用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)");