Java POI Сводная таблица строк по умолчанию свернута - PullRequest
0 голосов
/ 03 января 2019

Я создаю сводную таблицу, используя Java POI XSSFSheet createPivotTable.

Как настроить файл вывода со свернутыми элементами по умолчанию?

1 Ответ

0 голосов
/ 14 января 2019

Этот метод свернет строки на заданном уровне

void collapseRows(Integer level) {
    System.out.println("Collapse Level: " + level);

    XSSFSheet dataSheet = (XSSFSheet) pivotTable.getDataSheet();
    Set<String> colAValues = new LinkedHashSet<String>();

    for (Integer r = 1; r < dataSheet.getLastRowNum() + 1; r++) {
        Row row = dataSheet.getRow(r);
        if (row != null) {
            Cell cell = row.getCell(level);
            if (cell != null) {
                colAValues.add(cell.toString());
            }
        }
    }

    List<org.openxmlformats.schemas.spreadsheetml.x2006.main.CTItem> itemList =
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(level).getItems().getItemList();
    Integer i = 0;
    org.openxmlformats.schemas.spreadsheetml.x2006.main.CTItem item = null;

    for (String value : colAValues) {
        item = itemList.get(i);
        item.unsetT();
        item.setX(i++);
        pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().getCacheFields()
            .getCacheFieldArray(level).getSharedItems().addNewS().setV(value);
        item.setSd(false); // set False will collapse child item
    }

    while (i < itemList.size()) {
        item = itemList.get(i++);
        item.setSd(false); // set False will collapse row
    }
}

Также вам потребуется добавить зависимость в файл project.xml

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>ooxml-schemas</artifactId>
  <version>1.3</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...