![](/img/trans.png)
[英]How to create pivot table in SXSSF sheet using apache poi library in java?
[英]How do you sort Pivot Table Data using the Apache POI library in Java
是否可以在 Java 中使用 Apache POI 对 XSSFPivotTable 数据进行排序? 目前我能够创建一个数据透视表,分配一个标签,并添加聚合函数,但在数据排序方面没有运气。 目前我的Java代码如下:
public XSSFSheet createPivotTable (XSSFSheet datasht, XSSFSheet destinationsheet) {
XSSFPivotTable pivotTable = destinationsheet.createPivotTable(new AreaReference("$A:$AV"), new CellReference("A1"), datasht);
pivotTable.addRowLabel(0);
pivotTable.addColumnLabel(DataConsolidateFunction.MIN, 25);
pivotTable.addColumnLabel(DataConsolidateFunction.MIN, 24);
pivotTable.addColumnLabel(DataConsolidateFunction.MIN, 46);
pivotTable.addColumnLabel(DataConsolidateFunction.MIN, 47);
/*
Insert code to sort pivot table data in ascending order here
*/
return destinationsheet;
}
有没有人知道如何访问 XSSFPivotTable 的排序功能,或者知道这是否可行?
我看过的另一个选项是有一个模板 excel 文件,其中包含一个预先存在的数据透视表,配置我想要的方式(包括排序),它链接到 excel 中的命名范围。 然后,每次执行 Java 代码时,只需使用新数据更新模板文件中的命名范围。
然而,excel 数据透视表确实是一个奇怪的野兽,当您将“模板”excel 文档另存为新文件时,数据透视表区域引用始终更新为绝对值,即 =OLDFILENAME.xlsx!pivotdatarange 而不是 =NAMEFILENAME.xlsx !pivotdatarange。
所以我对这个选项的问题是是否可以修改 Excel 中现有数据透视表的区域参考?
干杯,
乔希
可以对数据透视表中的数据进行排序,但您必须使用 CT 类并且可能需要包含另一个依赖项。
按升序按第一列排序:
int indexOfSortColumn = 0;
pivotTable.getCTPivotTableDefinition()
.getPivotFields()
.getPivotFieldArray(indexOfSortColumn)
.setSortType(STFieldSortType.ASCENDING);
indexOfSortColumn
是输入区域中的索引。
如果你的编译器不能找到STFieldSortType,你需要更换你的依赖org.apache.poi:poi-ooxml-schemas
上的依赖org.apache.poi:ooxml-schemas
。 ooxml-schemas
和poi-ooxml-schemas
都包含 OOXML 文档的 XML 模型,但后者被精简了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.