java - Java POI PivotTable 设置行默认折叠
问题描述
我使用 Java POI XSSFSheet createPivotTable 创建数据透视表。
默认情况下,如何配置带有折叠项目的输出文件?
解决方案
此方法将折叠提供的级别上的行
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>
推荐阅读
- tensorflow - 使用 MirroredStrategy() 卡住模型
- java - 将数据从firebase添加到android中的listview
- javascript - 我如何在 Material-ui 中实现下拉标题?
- docker - 在本地运行 GitLab 和 GitLab-Runner docker 实例时,管道中的构建步骤因连接被拒绝错误而失败
- consensus - 为什么 RAFT 协议拒绝使用较低期限的 RequestVote?
- python - 无法在 Ubuntu 20.04 LTS 上使用 python 接收 UDP 广播,适用于同一网络上的 Raspbian 和 Centos
- docker - 服务笔记本既没有指定图像也没有指定构建上下文。必须提供至少一个
- jquery - 比较 table 和 div 之间的类并设置未出现的样式
- javascript - Eslint(没有未使用的表达式)
- python - 如何对列表列表进行排序,并按间隔仅保留每个第一个元素的最大第二个元素?