【发布时间】:2019-01-03 15:07:33
【问题描述】:
我使用 Java POI XSSFSheet createPivotTable 创建数据透视表。
如何在默认情况下配置带有折叠项的输出文件?
【问题讨论】:
标签: java excel apache-poi pivot-table
我使用 Java POI XSSFSheet createPivotTable 创建数据透视表。
如何在默认情况下配置带有折叠项的输出文件?
【问题讨论】:
标签: java excel apache-poi pivot-table
此方法将折叠提供的级别上的行
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>
【讨论】: