【问题标题】:Java POI PivotTable set rows collapsed by defaultJava POI PivotTable 设置行默认折叠
【发布时间】:2019-01-03 15:07:33
【问题描述】:

我使用 Java POI XSSFSheet createPivotTable 创建数据透视表。

如何在默认情况下配置带有折叠项的输出文件?

【问题讨论】:

标签: java excel apache-poi pivot-table


【解决方案1】:

此方法将折叠提供的级别上的行

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>

【讨论】:

    猜你喜欢
    • 2012-02-24
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多