Apache POI - 条件格式 - 需要为规则和格式设置不同的单元格范围



我正在尝试使用apache poi java创建一个空的excel模板。我需要添加一个规则 - 当填充第 3 列时,需要以某种颜色突出显示 7 到 12 的列(作为用户的强制性指示器(。

我可以找到下面的代码,当同一单元格上满足条件时,它会为单元格着色。但是我想在当前单元格上满足条件时对不同的单元格进行着色/格式化。

`   XSSFSheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(ComparisonOperator.GT, "5");
PatternFormatting patternFmt = rule1.createPatternFormatting();
patternFmt.setFillBackgroundColor(IndexedColors.YELLOW.index);
sheetCF.addConditionalFormatting(addressList.getCellRangeAddresses(), rule1); //when rule1 is met, same cell is colored yellow

但我想要的是当满足规则 1 时,然后为不同的单元格范围着色。

这在poi中可能吗以及如何?

Excel提供基于公式的条件格式规则。

公式=AND(ISNUMBER($C1), $C1>5)返回$C1中的值是否为数字且大于 5True。如果将此公式应用于范围G1:L1000,则如果相应行的第C列中的值满足该连续性,则此范围中的每个单元格都将为 true。这是因为列C是使用公式中的$C固定的。但是行号不是固定的,因此是相对的。

使用apache poi的示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.FileOutputStream;
public class ConditionalFormatting {
public static void main(String[] args) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("new sheet");
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule("AND(ISNUMBER($C1), $C1>5)");
PatternFormatting fill = rule.createPatternFormatting();
fill.setFillBackgroundColor(IndexedColors.YELLOW.index);
fill.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
ConditionalFormattingRule[] cfRules = new ConditionalFormattingRule[]{rule};
CellRangeAddress[] regions = new CellRangeAddress[]{CellRangeAddress.valueOf("G1:L1000")};
sheetCF.addConditionalFormatting(regions, cfRules);
FileOutputStream out = new FileOutputStream("ConditionalFormatting.xlsx");
workbook.write(out);
out.close();
workbook.close();
}
}

现在,如果您在列C数字和大于 5 的列中放入某些内容,则列G:L中的单元格将填充为黄色。

最新更新