[英]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.