Java Apache POI条件格式-GetNumConditionFormattings始终返回0
我在使用ApachePOI3.9读取Excel工作表中的条件格式时遇到问题。Excel文件是使用MS Excel 2010创建的,添加了一些条件格式(我解压缩了.xlsx文件,检查了sheet1.xml,它有几个x14:conditionalFormat标记),但是sheet.getSheetConditionalFormat().getNumConditionalFormattings()始终返回0。我可以毫无问题地读取其他属性,包括合并的单元格。我错过什么了吗Java Apache POI条件格式-GetNumConditionFormattings始终返回0,java,excel,apache-poi,conditional-formatting,Java,Excel,Apache Poi,Conditional Formatting,我在使用ApachePOI3.9读取Excel工作表中的条件格式时遇到问题。Excel文件是使用MS Excel 2010创建的,添加了一些条件格式(我解压缩了.xlsx文件,检查了sheet1.xml,它有几个x14:conditionalFormat标记),但是sheet.getSheetConditionalFormat().getNumConditionalFormattings()始终返回0。我可以毫无问题地读取其他属性,包括合并的单元格。我错过什么了吗 谢谢 我想我看到了问题所在。P
谢谢 我想我看到了问题所在。POI确实支持条件格式,并且只有当值不是对另一个单元格的引用时,它才会正确读取它们。例如,如果我只使用规则格式的单元格,这些单元格包含并选择特定的文本,并且包含并引用一个单元格($a$1),那么POI将不会读取该单元格。如果我将引用更改为静态值(“测试POI”),那么它将得到正确处理
有没有办法强制POI正确处理引用?SheetConditionalFormatting sheetCF=sheet.getSheetConditionalFormatting() CellRangeAddress[]区域={CellRangeAddress.valueOf(“N1:N”+rownum)}
发布代码示例和excel内容将对此处有所帮助。代码很简单:工作簿。getSheetAt(0)。getSheetConditionalFormatting()。getNumConditionalFormattings()excel文件包含从主功能区、样式组、条件格式下拉列表中设置的条件格式
ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(ComparisonOperator.BETWEEN, "481", "499");
PatternFormatting fill1 = rule1.createPatternFormatting();
fill1.setFillBackgroundColor(IndexedColors.LIGHT_TURQUOISE.index);
fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
sheetCF.addConditionalFormatting(regions, cfRules);