2016-08-15 60 views
2

我試圖用+80.000導出一個XLS文件,我得到了「net.sf.jasperreports.engine.JRException:單元格無法添加」。導出帶有+80.000記錄的XLS

我試圖超出「MAXIMUM_ROWS_PER_SHEET」,但它沒有奏效。

這是我的代碼:

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
try { 
    JasperReport relatorioJasper = (JasperReport) JRLoader.loadObjectFromFile(parametros.get("REPORT_JASPER")+""); 

    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(listaReport); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(relatorioJasper, parametros, dataSource); 

    JRXlsExporter exporter = new JRXlsExporter(); 
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); 
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out)); 
    SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration(); 
    configuration.setOnePagePerSheet(false); 
    configuration.setDetectCellType(true); 
    configuration.setCollapseRowSpan(false); 
    configuration.setRemoveEmptySpaceBetweenColumns(true); 
    // exporter.setParameter(JRXlsExporterParameter.MAXIMUM_ROWS_PER_SHEET, 10000); 

    exporter.setConfiguration(configuration); 
    exporter.exportReport(); 


    InputStream relatorios = new ByteArrayInputStream(out.toByteArray()); 
    return stream2file(relatorios, parametros.get("REPORT_NAME")+"" ,Constantes.XLS); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 
return null; 

任何人可以幫助我嗎?

+2

你可以發佈完整的堆棧跟蹤文章 –

+0

@ user3633580你可以嘗試使用附加的* JasperReports *庫源代碼來調試代碼。您可以在新JRException(EXCEPTION_MESSAGE_KEY_CANNOT_ADD_CELL)引發的地方設置斷點,例如在* JExcelApiExporter *類中,在這種情況下,您可以捕獲異常的第三方庫(POI或JExcelApi)的原因 –

+0

感謝您的提示,但它只是改變XLS到XLSX – user3633580

回答

1

我覺得麻煩不在出口。 MAXIMUM_ROWS_PER_SHEET也無法幫助您。
XLS不能包含超過65,536行。嘗試使用XLSX
this answer from Superuser

+0

這是不同版本的poi限制https://poi.apache.org/apidocs/org/apache/poi/ss/SpreadsheetVersion.html –

+0

謝謝!它的工作。 – user3633580

+0

你是歡迎!) – sanluck