alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
31.44k stars 7.44k forks source link

根据原文件作为模板写入数据生成新的文件占用内存很大OOM #3858

Open xiongyanokok opened 1 week ago

xiongyanokok commented 1 week ago

建议先去看文档

快速开始常见问题

异常代码

   ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(byteArrayInputStream).build();

异常提示

java.lang.OutOfMemoryError: Java heap space Wrapped by: com.alibaba.excel.exception.ExcelGenerateException: java.lang.OutOfMemoryError: Java heap space at com.alibaba.excel.write.ExcelBuilderImpl.(ExcelBuilderImpl.java:41) at com.alibaba.excel.ExcelWriter.(ExcelWriter.java:47) at com.alibaba.excel.write.builder.ExcelWriterBuilder.build(ExcelWriterBuilder.java:130)

"org.apache.poi.xssf.usermodel.XSSFWorkbook", loaded by "org.springframework.boot.loader.LaunchedURLClassLoader@0xe0000000", which occupies 702,261,008 (83.36%) bytes.

问题描述

xiongyanokok commented 1 week ago

现在使用的版本是2.2.7

psxjoy commented 1 week ago

建议升级版本至 3.3.4+ 或者分批写入。

xiongyanokok commented 1 week ago

由于生成失败内容的excel需要使用原文件的样式, 需要用原文件生成Workbook, 发现Workbook workbook = WorkbookFactory.create(inputStream); 这里占用内存也比较多, 也试过SXSSFWorkbook 方式 各种报错