List<String> columnPairList = new ArrayList<>(Arrays.asList(
new String[]{"A:H","C:J","D:K","E:L","F:M"}
));
//单元格样式
SheetConditionalFormatting scf = sheet.getSheetConditionalFormatting();
for (String columnPair : columnPairList){
String leftCol = columnPair.split(":")[0];
String rightCol = columnPair.split(":")[1];
// 生成公式:例如 "$A1<>$H1"
String formula = String.format("NOT(EXACT($%s%d,$%s%d))", leftCol, 4, rightCol, 4);
// 创建规则
ConditionalFormattingRule rule = scf.createConditionalFormattingRule(formula);
// 设置格式(黄色背景)
PatternFormatting fill = rule.createPatternFormatting();
fill.setFillBackgroundColor(IndexedColors.YELLOW.getIndex());
fill.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
// 动态生成左右列的区域(例如A5:A10和H5:H10)
String leftRegion = String.format("%s%d:%s%d",
leftCol, 4,
leftCol, rowNum
);
String rightRegion = String.format("%s%d:%s%d",
rightCol, 4,
rightCol, rowNum
);
// 定义应用区域(左右列同时高亮)
CellRangeAddress[] regions = {
CellRangeAddress.valueOf(leftRegion),
CellRangeAddress.valueOf(rightRegion)
};
// 添加条件格式
scf.addConditionalFormatting(regions, rule);
}
02-07
1499
