Java Poi XSSF - 使用多个可扩展列创建数据透视表

时间:2017-06-21 09:13:53

标签: java excel apache-poi xssf

我有大约1000行有多列,我想从中创建一个数据透视表。

我的实际结果是: enter image description here

但我希望获得一个如下所示的数据透视表: enter image description here

我目前的代码:

// ... 
// fill sheet with data 
// ...

// create Pivot table
int firstRow = sheet.getFirstRowNum() + firstDataRow;
int lastRow = sheet.getLastRowNum();
int firstCol = sheet.getRow(0).getFirstCellNum();
int lastCol = sheet.getRow(firstRow).getLastCellNum();

CellReference topLeft = new CellReference(firstRow, firstCol);
CellReference botRight = new CellReference(lastRow, lastCol-1);

XSSFPivotTable pivotTable = pivotSheet.createPivotTable(
        new AreaReference(topLeft, botRight), new CellReference(firstRow, lastCol), sheet);

pivotTable.addRowLabel(lastCol - 1); // month
pivotTable.addRowLabel(6); // car
pivotTable.addRowLabel(lastCol - 2); // state
pivotTable.addColumnLabel(DataConsolidateFunction.COUNT, 0, 
        resourceBundle.getString("Count"));

我甚至不知道如何命名不同的结果。 我想我需要深入研究poi主题,以生成更复杂的数据透视表,但我不知道如何。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

CTPivotFields pFields = pivotTable.getCTPivotTableDefinition().getPivotFields();
            pFields.getPivotFieldArray(lastCol - 1).setOutline(false);
            pFields.getPivotFieldArray(6).setOutline(false);
            pFields.getPivotFieldArray(lastCol - 2).setOutline(false);