在数据透视表中重复项目标签并禁用子总计-Apache POI

时间:2018-10-29 14:53:42

标签: java excel apache-poi pivot-table

我正在尝试禁用Row Pivot字段的小计,并在Apache POI(v 3.13)的帮助下,在PIVOT表的所有行中重复项目标签。 )。我找不到重复行项目标签的方法。我找到了禁用小计的方法-

  

setDefaultSubtotal(false)

但是它给了我以下错误。 enter image description here enter image description here

我发现了一个link,它建议构建透视缓存,但是我听不懂。还有其他解决方法吗?

        XSSFSheet pivotSheet =  wb.createSheet("PIVOT");
        String areaRef = "A1:R" + worksheet.getLastRowNum();
        //System.out.println("AreaRef: " + areaRef);
        XSSFPivotTable pivotTable = pivotSheet.createPivotTable(new AreaReference(areaRef), new CellReference("A4"),worksheet);

        pivotTable.addReportFilter(0);
        pivotTable.addReportFilter(2);
        pivotTable.addRowLabel(1);
        pivotTable.addRowLabel(3);
        pivotTable.addRowLabel(4);
        pivotTable.addRowLabel(5);
        pivotTable.addRowLabel(6);
        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 7, "Summe von Projektplanung");
        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 16, "Summe von VERFÜGT");
        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 17, "Summe von ÜBER-/UNTERSCHREITUNG");
        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 8, "Summe von EL (EUR)");
        setFormatDataField(pivotTable, 7, 3);
        setFormatDataField(pivotTable, 16, 3);
        setFormatDataField(pivotTable, 17, 3);
        setFormatDataField(pivotTable, 8, 3);

        //CTPivotField fld = pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldList().get(1);
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(1).setOutline(false);
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(2).setOutline(false);
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(3).setOutline(false);
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(4).setOutline(false);
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(5).setOutline(false);
        pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(1).setDefaultSubtotal(false);

0 个答案:

没有答案