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 ワークブックに読み込むと、背景色のセル スタイルが返されません。
誰かが同じ種類の問題を試したり直面したりしましたか?
よろしく、アズハル