Я пытаюсь применить некоторый стиль ячейки к сводной таблице Excel, сгенерированной кодом с помощью Apache-poi.
Я не могу найти какую-либо документацию / пример по этому поводу, и я боюсь, что естьнет способа установить стиль ячейки в сводную таблицу.
Я пытался циклически перебирать строки, но в сводной таблице Apache-poi нет строки!
ЭтоФактический код, который создает сводную таблицу:
XSSFSheet dataSheet = ((XSSFSheet) workbook.getSheet(sheetName));
int firstRow = dataSheet.getFirstRowNum();
int lastRow = dataSheet.getLastRowNum();
int firstCol = dataSheet.getRow(0).getFirstCellNum();
int lastCol = dataSheet.getRow(0).getLastCellNum();
CellReference topLeft = new CellReference(sheetName, firstRow, firstCol, false, false);
CellReference botRight = new CellReference(sheetName, lastRow, lastCol - 1, false, false);
AreaReference dataSheetAreaReference = new AreaReference(topLeft, botRight, null);
List<Map<String, Object>> pivotWidgetFields = castedParams.getFields();
List<Map<String, Object>> pivotRowFields = pivotWidgetFields.stream().filter(field -> field.get("area").equals("row")).collect(Collectors.toList());
List<Map<String, Object>> pivotColumnFields = pivotWidgetFields.stream().filter(field -> field.get("area").equals("column")).collect(Collectors.toList());
List<Map<String, Object>> pivotValueFields = pivotWidgetFields.stream().filter(field -> field.get("area").equals("data")).collect(Collectors.toList());
XSSFSheet pivotSheet = ((XSSFSheet) workbook.createSheet("Pivot sheet"));
XSSFPivotTable pivotTable = pivotSheet.createPivotTable(dataSheetAreaReference, new CellReference("A1"));
// row and column fields setup here [...]
Это результат:
Можно ли стилизовать сводную ячейку на основе значения ячейки? Что-то вроде:
if (cell.getValue().equals("Ricavi Vendita CEE ~ (353)")) {
cell.setCellStyle("someStyle");
}
И тогда вы увидите результат, подобный этому:
Заранее спасибо!
[ОБНОВЛЕНИЕ]:
Невозможно изменить стиль ячейки, например цвет или цвет фона, с предложенным повторяющимся ответом. Это решение помогает мне только с форматированием чисел в сводном поле.
private static void setFormatPivotField(XSSFPivotTable pivotTable,
long fieldIndex,
Integer numFmtId) {
Optional.ofNullable(pivotTable
.getCTPivotTableDefinition()
.getPivotFields())
.map(pivotFields -> pivotFields
.getPivotFieldArray((int) fieldIndex))
.ifPresent(pivotField -> pivotField
.setNumFmtId(numFmtId));
}
Этот код не может получить доступ к стилю поля такого цвета или фона. Мне нужно применить стили к полям строк строки.