数据透视表中的排序问题

时间:2018-08-31 18:05:02

标签: java

我正在从excel创建数据透视表,但是我的列组标签未排序。它的顺序与excel中的顺序相同,但是如果我从同一excel中手动创建数据透视表,则会对列组标签进行排序。 请在我的代码下面找到添加列组标签。您的快速帮助将不胜感激。预先感谢。

public static void addColumLabels(XSSFPivotTable pivotTable, int columnIndex, AreaReference pivotArea, String name) {
    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);
    if(name != null) {
        pivotField.setName(name);
    }
    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());
}

0 个答案:

没有答案