我已修改基本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应该明确阻止人们通过抛出错误来做到这一点
答案 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也有同样的问题,是的,我同意它会产生一些警告/错误。