Apache POI:Excel数据透视表 - 行标签

时间:2016-04-06 05:22:18

标签: java excel apache-poi pivot-table xssf

我需要在JAVA中创建一个excel表,如下所示:

enter image description here

我无法并排创建包含多列的行标签(菜单和子菜单过滤器)。

不是在不同的列中显示子菜单,而是在菜单栏下面。

以下是我写的代码:

XSSFSheet sheet = my_xlsx_workbook.getSheetAt(0); 
    AreaReference a=new AreaReference("A1:G7");
    CellReference b=new CellReference("I5");
    XSSFPivotTable pivotTable = sheet.createPivotTable(a,b);
    pivotTable.addReportFilter(0);
    pivotTable.addReportFilter(1);
    pivotTable.addRowLabel(2);
    pivotTable.addRowLabel(3);
    pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 4, "Sum");   

但它的错误显示如下:

enter image description here

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

由于格式是XML,因此很容易检查所需内容。打开Zip xlsx的包装,然后查看/xl/pivotTables/pivotTable1.xml

然后:https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFPivotTable.html#getCTPivotTableDefinition%28%29http://grepcode.com/file/repo1.maven.org/maven2/org.apache.poi/ooxml-schemas/1.1/org/openxmlformats/schemas/spreadsheetml/x2006/main/CTPivotTableDefinition.java

    AreaReference a=new AreaReference(new CellReference("A1"), new CellReference("E7"));
    CellReference b=new CellReference("I5");
    XSSFPivotTable pivotTable = sheet.createPivotTable(a,b);
    pivotTable.addReportFilter(0);
    pivotTable.addReportFilter(1);
    pivotTable.addRowLabel(2);

pivotTable.getCTPivotTableDefinition().getPivotFields().getPivotFieldArray(2).setOutline(false);

    pivotTable.addRowLabel(3);
    pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 4, "Sum");