在java中使用jxls编写大量的行
我正在使用下面的代码来写入数据到Excel
XLSTransformer transformer = new XLSTransformer();
InputStream is = this.getServlet().getServletContext() .getResourceAsStream(templateFilePath); HSSFWorkbook workBook = (HSSFWorkbook) transformer.transformXLS(is, beans);
但是系统挂起后HSSFWorkbook workBook =(HSSFWorkbook)transformer.transformXLS(is,beans); 如果行数大于1500.是否有任何其他方式或suggetsion写数据使用模板和bean对象的大型数据集
您可以升级到Jxls-2并使用SXSSF Transformer支持。 代码可能看起来像这样
Transformer transformer = PoiTransformer.createSxssfTransformer(workbook, 100, false); AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer); List<Area> xlsAreaList = areaBuilder.build(); Area xlsArea = xlsAreaList.get(0); xlsArea.applyAt(new CellRef("Result!A1"), context);
请参阅jxls-demo中的完整示例。 请注意,这种方法假定只有一部分行被保存在内存中(特别是关于公式评估),所以假定有一些模板限制。
如果您不需要公式,build议使用context.getConfig().setIsFormulaProcessingRequired(false);
来禁用公式处理context.getConfig().setIsFormulaProcessingRequired(false);
您可以尝试使用SXSSF – POI工作簿的stream式版本。 这是一个猜测。