Java POI库的条件格式

Java POI库的条件格式,java,apache-poi,Java,Apache Poi,我面临一些POI条件格式的问题。我不太明白波伊在这里做什么。 我正在为值大于70的单元格值设置背景色格式规则。我希望在我的应用程序中获得该单元格样式(通过条件格式规则应用),但POI不会返回更新的单元格样式,而是返回默认的单元格样式。这是我的密码 XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet(); sheetConditionalFor

我面临一些POI条件格式的问题。我不太明白波伊在这里做什么。 我正在为值大于70的单元格值设置背景色格式规则。我希望在我的应用程序中获得该单元格样式(通过条件格式规则应用),但POI不会返回更新的单元格样式,而是返回默认的单元格样式。这是我的密码

            XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet();

    sheetConditionalFormatting sheetCF = sheet
            .getSheetConditionalFormatting();



    // Condition 1: Cell Value Is greater than 70 (Blue Fill)
    ConditionalFormattingRule rule1 = sheetCF
            .createConditionalFormattingRule(ComparisonOperator.GT, "70");
    PatternFormatting fill1 = rule1.createPatternFormatting();
    fill1.setFillBackgroundColor(IndexedColors.BLUE.index);
    fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND);

    CellRangeAddress[] regions = { CellRangeAddress.valueOf("A1:C10") };

    int index = sheetCF.addConditionalFormatting(regions, rule1);

    sheet.createRow(0).createCell(0).setCellValue(84);
    sheet.createRow(1).createCell(0).setCellValue(60);
    sheet.createRow(2).createCell(0).setCellValue(50);
    sheet.createRow(3).createCell(0).setCellValue(51);
    sheet.createRow(4).createCell(0).setCellValue(49);
    sheet.createRow(5).createCell(0).setCellValue(41);

    Cell cell = sheet.getRow(0).getCell(0);
    CellStyle style = cell.getCellStyle();
    System.out.println("style index  : "+style.getIndex()+" value:"+cell.getNumericCellValue());
对于上述代码,
style.getIndex()
始终返回0(即默认格式)。我觉得它应该返回我的背景色更新的格式样式。当我在实际的xlsx文件中编写上述工作簿并用MSExcel打开时,我可以看到第一个单元格的背景色。同样,当我从xlsx文件读取到POI工作簿时,它不会返回带有背景色的单元格样式

有没有人尝试过/面对过同样的问题

问候,,
Azhar

getCellStyle返回与单元格关联的格式样式。 应用条件后,它不会返回已计算的格式样式
风格。为此,您需要条件格式评估器

可能“样式索引”指的是静态样式,并且无论如何都不需要根据条件进行更改?“样式”是定义的,我不希望它随着值的变化而变化。格式更改。你能否在POI中发现这一点取决于他们在多大程度上追逐MS实现的怪癖。。事实上,当我使用'cellStyle.setFillBackgroundColor()和'cellStyle.setFillForegroundColor'更改单元格样式时,POI会创建新的单元格样式,相应的单元格会返回新创建的样式,但当单元格通过条件格式设置格式时,这种情况不会发生。您知道Excel中的单元格样式和条件格式是两种完全不同的东西吗?请尝试使用setFillForegroundColor而不是setFillBackgroundColor。@Gagravarr:我认为无论您如何更改单元格格式都是如此(通过条件格式/直接单元格样式属性),单元格样式应该更改。如果不更改,则很难获得通过条件格式应用的样式。我不确定POI/Excel是如何做到这一点的?如果不同,则如何通过条件格式规则获得单元格样式格式。我对此感到困惑。任何提示都将受到欢迎。