gpt4 book ai didi

java - 使用 Apache POI 将父列添加到 Excel 数据透视表

转载 作者:行者123 更新时间:2023-12-02 04:25:17 30 4
gpt4 key购买 nike

我正在尝试使用 Apache-POI 在 Excel 中使用从数据库检索的数据创建数据透视表。目前我可以在数据透视表上创建普通的列标签,但我希望能够添加父列表。

这就是我希望我的表格的外观: enter image description here

这就是我创建数据透视表的方式:

XSSFPivotTable pivotTable = sheet.createPivotTable(new AreaReference(
fromSheet.getSheetName() + "!" + tableRange),
new CellReference("A6"));

pivotTable.addRowLabel(0); // the row label

pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 2, "Child Column 1");
pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 3, "Child Column 2");

如何添加包含两个子列的父列?

最佳答案

您应该在“列标签”而不是“值”中添加父列。

但是 POI API 没有提供 addColumn 函数,请尝试以下函数将父列添加到列标签

public static void addColumLabels(XSSFPivotTable pivotTable, int columnIndex) {
AreaReference pivotArea = getPivotArea(pivotTable);
int lastColIndex = pivotArea.getLastCell().getCol() - pivotArea.getFirstCell().getCol();

if (columnIndex > lastColIndex && columnIndex < 0) {
throw new IndexOutOfBoundsException();
}

CTPivotFields pivotFields = pivotTable.getCTPivotTableDefinition().getPivotFields();

CTPivotField pivotField = CTPivotField.Factory.newInstance();
CTItems items = pivotField.addNewItems();

pivotField.setAxis(STAxis.AXIS_COL);
pivotField.setShowAll(false);
for (int i = 0; i <= lastColIndex; i++) {
items.addNewItem().setT(STItemType.DEFAULT);
}
items.setCount(items.sizeOfItemArray());
pivotFields.setPivotFieldArray(columnIndex, pivotField);

// colfield should be added for the second one.
CTColFields colFields;
if (pivotTable.getCTPivotTableDefinition().getColFields() != null) {
colFields = pivotTable.getCTPivotTableDefinition().getColFields();
} else {
colFields = pivotTable.getCTPivotTableDefinition().addNewColFields();
}
colFields.addNewField().setX(columnIndex);
colFields.setCount(colFields.sizeOfFieldArray());
}

关于java - 使用 Apache POI 将父列添加到 Excel 数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32266225/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com