Apache POI 条件格式 - getNumConditionalFormattings 总是返回 0

3
我在使用Apache POI 3.9读取Excel表格中的条件格式时遇到了麻烦。该Excel文件是使用MS Excel 2010创建的,添加了一些条件格式(我解压缩了.xlsx文件,检查了sheet1.xml文件,其中有多个x14:conditionalFormatting标签),但sheet.getSheetConditionalFormatting().getNumConditionalFormattings()始终返回0。我可以轻松读取其他属性,包括合并单元格。是否我漏掉了什么?
谢谢!

3
发布代码示例和Excel内容将有所帮助。 - Ashish
代码很简单:workbook.getSheetAt(0).getSheetConditionalFormatting().getNumConditionalFormattings() Excel文件包含从主页选项卡、样式组、条件格式下拉菜单设置的条件格式。 - PeterB
2个回答

0

SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();

获取Sheet的条件格式为sheetCF = sheet.getSheetConditionalFormatting();

        ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(ComparisonOperator.BETWEEN, "481", "499");
        PatternFormatting fill1 = rule1.createPatternFormatting();
        fill1.setFillBackgroundColor(IndexedColors.LIGHT_TURQUOISE.index);
        fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);

CellRangeAddress[] regions = { CellRangeAddress.valueOf("N1:N" + rownum) };

代码中定义了一个名为regions的数组,其中包含一个单元格范围地址对象。该对象的值为"N1:N"加上变量rownum的值。

        sheetCF.addConditionalFormatting(regions, cfRules);

-1

我觉得我看到了问题所在。POI支持条件格式,只有当值不是对另一个单元格的引用时才能正确读取它们。因此,例如,如果我使用规则仅格式化包含的单元格并选择特定文本和包含以及对单元格的引用(=$A$1),那么POI将无法读取它。如果我将引用更改为静态值(“test POI”),则可以正确处理。

是否有一种方法可以强制POI正确处理引用?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接