poi导出excel内存溢出 poi导出excel自定义保存
1. 并将其从记忆中删除,等等。 rowAccessWindowSize 表示指定的内存缓存记录数。 默认值为 100。可以通过 new SXSSFWorkbook(int rowAccessWindowSize) 或 SXSSFSheet.setRandomAccessWindowSize(int windowSize) 设置该值。 java使用POI导出Excel文件。 打开导出文件时,出现错误5。 我自己的 Excel 文件存在。 我需要编辑它然后导出它。 问题是如果我的excel在无保护状态下导出打开是没有问题的。 在受保护的情况下导出和打开时,将报告文件错误并需要修复。 
2.poi有每次向内存写入1000条数据的机制。 您可以更改此 1,000,尽量不要获取超过 10,000 条的数据。 写入1000条数据后,再写入一次,以免溢出Memory。
3. 每个Sheet最多可以导出104万行,但这会带来OOM内存溢出问题。 原因是您创建的工作表行单元格当前存储在内存中。 随着数据量的增加,对内存的需求也随之增加,因此更容易发生OOM。
4. 这里概括一下,在 POI 中使用 HSSF 对象时,Excel 2003 最多只允许存储 6553 个数据,这通常用于处理较小量的数据。 目前,Excel 是不具备可扩展性的,在计算机性能稍低的机器上测试很容易导致堆溢出。 当我升级到XSSF对象并使用其基本接口时,EVentModel在操作时会节省内存,但编写代码会比较麻烦。 如果内存溢出9M左右,可能是你设置的Heap size太小了。 增加堆大小也是必要的。 如果是 xls,使用 JExcel 将节省 POI 的内存。 但不支持2010。
5. 你好,原贴者,excel的最大行数是65536,所以不可能导出20万条数据到excel。 内存溢出问题是因为您的一个对象(可能是存储数据的对象,例如列表)太大并且超出了最大内存。 所以你需要的是循环读取一些数据并将其写入excel,而不是一次。 Easyexcel针对07版本的Excel重写了poi分析,使得原来的3M excel仍然需要100M左右的内存,使用POI sax时可以减少到KB级别。 而且无论Excel有多大,内存溢出都不会发生。 版本 03 取决于 POI 萨克斯模式。 模型转换封装在顶层,让用户更加简单方便。
