[apache poi xssf]:在新工作表中创建数据透视表(Java)

时间:2016-05-23 22:28:53

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

我已修改基本example以在新工作表中创建数据透视表。但是在打开新的xlsx文件时,我收到一个错误(heapTotal后跟:

Excel found unreadable content in...

以下是我修改过的代码段:

Removed Part: /xl/pivotTables/pivotTable1.xml part with XML error.  (PivotTable view) Load error. Line 2, column 561.
Removed Records: Workbook properties from /xl/workbook.xml part (Workbook)

我已经通过代码进行了调试,并没有看到明显的问题......

关于如何处理这个问题的想法?或者如果这是库的错误?

由于

修改

问题在于从上面的代码中的单元格引用A1(XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet("plain"); //Create some data to build the pivot table on setCellData(sheet); XSSFSheet sheet2 = wb.createSheet("pivot"); XSSFPivotTable pivotTable = sheet2.createPivotTable(new AreaReference("plain!$A$1:$D$4", null), new CellReference("pivot!$A$1")); //Configure the pivot table //Use first column as row label pivotTable.addRowLabel(0); //Sum up the second column pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1); //Set the third column as filter pivotTable.addColumnLabel(DataConsolidateFunction.AVERAGE, 2); //Add filter on forth column pivotTable.addReportFilter(3); )开始。看来,如果我们从A1开始,工作表上没有足够的空间来做其他格式化透视网格。所以将其改为A5就可以了。虽然我仍然认为POI应该明确阻止人们通过抛出错误来做到这一点

1 个答案:

答案 0 :(得分:1)

我在POI verion 3.14和3.16 Beta中遇到过这个问题,但是当我使用源表引用作为第三个选项调用方法createPivotTable时,我发现这适用于那些版本。

        //Create some data to build the pivot table on
    setCellData(sheet);

    AreaReference source = new AreaReference("A1:D4", SpreadsheetVersion.EXCEL2007);
    XSSFSheet sheet2 = wb.createSheet("pivot");

    CellReference position = new CellReference("A3"); //convertColStringToIndex

    XSSFPivotTable pivotTable = sheet2.createPivotTable(source, position, sheet);

这在POI 3.16 Beta和3.14中运行 我在A1的CellReference也有同样的问题,是的,我同意它会产生一些警告/错误。