在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式版本。 这是一个猜测。