سؤال

I work by Apache poi API, I want to color the lines conditionally , the rule is alternating color after 5 lines: the line 1-5 red, line 6-10 blue, line 11-15 red. so on.

this rule :

 ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule("MOD(ROW(),2)");

alternate row in a different color.

how I can write my rule ??

هل كانت مفيدة؟

المحلول

You'll need two rules, one for red and one for blue. Subtract 1 from ROW() so that row 11 becomes 10 and row 15 becomes 14, so that the result of the mod is less than 5. Also, row 10 becomes 9 and the mod is greater than or equal to 5, so it will become blue. The pattern repeats after 10 rows, so that's why the mod operand is 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);

Then you can add the conditional formatting to your sheet with your SheetConditionalFormatting object, with an appropriate CellRangeAddress.

For more detail, see the Quick Guide on Conditional Formatting.

نصائح أخرى

In my opinion the following (or something similar, probably with (ROW()+1) or (ROW()-1) instead of ROW()) should work:

ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule("MOD(ROW() / 5,2)");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top