在java中导入.xlsx文件时出现OutOfMemoryException

时间:2014-02-04 08:40:09

标签: java apache-poi xlsx

我试图以两种方式导入.xlsx文件:

1)如果我从eclipse运行,如果我导入,我能够成功导入

2)如果我创建了我的产品的.jar文件并在不使用eclipse的情况下作为独立应用程序运行,我收到OutOfMemoryException并因此无法导入

我的文件大小约为3mb,我使用poi 3.9,poi-ooxml-3.9,poi-ooxml-schemas-3.9,dom4j和xmlbeans作为外部罐子。

我甚至尝试过诸如-Xmx1g,-Xms1024M -Xmx1024M等参数。

请帮助我如何从我的独立应用程序导入xlsx文件。

1 个答案:

答案 0 :(得分:4)

也许你可以使用streaming API (SXSSF)

  

自3.8-beta3以来,POI提供了基于XSSF构建的低内存占用SXSSF API。

     

SXSSF是一种API兼容的XSSF流媒体扩展,可在以后使用   必须生成非常大的电子表格,并且堆空间是   有限。 SXSSF通过限制访问来实现其低内存占用   滑动窗口内的行,而XSSF提供访问权限   文档中的所有行。窗口中不再有的旧行   无法访问,因为它们被写入磁盘。