簡體   English   中英

使用jxls編寫大量行以在java中表現出色

[英]Writing large number of rows using jxls to excel in java

我使用以下代碼將數據寫入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對象寫入數據

您可以升級到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);禁用公式處理context.getConfig().setIsFormulaProcessingRequired(false);

您可以嘗試使用SXSSF - POI工作簿的流式版本。 這是猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM