我使用以下代码将数据写入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.是否有任何其他方式或建议用于使用大型数据集的模板和bean对象写入数据
答案 0 :(得分:2)
您可以升级到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中的完整示例。 请注意,此方法假设某些模板限制,因为只有一部分行保留在内存中(特别是关于公式评估)。
如果您不需要公式,建议您使用context.getConfig().setIsFormulaProcessingRequired(false);
答案 1 :(得分:1)
您可以尝试使用SXSSF - POI工作簿的流式版本。这是猜测。