簡體   English   中英

POI庫的條件格式

[英]Conditional formatting with POI libraries

我在POI條件格式方面遇到了一些問題。 我不完全明白POI在這里做什么。 我正在為值大於70的單元格值設置背景顏色格式設置規則。我想在我的應用程序中獲取該CellStyle(通過條件格式設置規則應用),但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返回與單元格關聯的格式樣式。 應用條件樣式后,它不會返回評估后的格式樣式。 為此,您需要ConditionalFormattingEvaluator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM