2016-05-23 1 views
1

Я изменил базовый example, чтобы создать сводную таблицу в новом листе. Но при открытии нового файла XLSX, я получаю сообщение об ошибке (Excel found unreadable content in... следуют:[apache poi xssf]: создание сводной таблицы в новом листе (Java)

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) 

)

Вот фрагмент кода я изменил:

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 (new CellReference("pivot!$A$1")) в приведенном выше коде. Кажется, если мы начнем с A1, на листе останется немного места, чтобы сделать какую-то другую сетку поворота форматирования. Так что изменение этого на A5 делает работу. Хотя я все еще думаю, что POI должен явно запретить людям делать это, выбросив ошибку

+1

Какая версия POI это? И если не последний, можете ли вы попробовать обновиться до последней версии 3.15-beta1, чтобы проверить, все ли там происходит? – centic

+0

Это звучит как ошибка в POI, я думаю, что лучший вариант - сообщить об ошибке на странице https://bz.apache.org/bugzilla/enter_bug.cgi?product=POI – centic

+0

. Я попробую новую версию ... хотя и нерешительно использовать его в производстве env как его еще «бета» – labheshr

ответ

0

У меня была эта проблема в 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.
У меня также была такая же проблема с CellReference в A1, и да, я согласен с тем, что это должно вызвать некоторые предупреждения/ошибки.

+0

Если вы можете решить, что должно вызывать ошибку, пожалуйста, откройте ошибку в [Apache POI bugzilla] (https://bz.apache.org/bugzilla/ enter_bug.cgi? продукт = POI). Если вы включите некоторый код/​​логику, еще лучше! :) – Gagravarr