我正在使用最新的POI 3.5 for Excel阅读.我安装了Excel MS Office 2007,因为poi正在提供XSSF来执行数据.
对于15000行数据,它正在正常执行,但是当超过30000或100000或200000的限制时,它容易出现Java堆空间异常.
代码如下:
UATinput = new FileInputStream(UATFilePath); uatBufferedInputStream = new BufferedInputStream(UATinput); UATworkbook = new XSSFWorkbook(uatBufferedInputStream);
我在Java堆大小的最后一行得到了Exception.我已经增加了大小-Xms256m -Xmx1536m
,但是对于更多数据,它给出了Java堆空间异常.
XSSFWorbook的这个例外可以帮助我吗?
不要在内存中读取整个文件,而是尝试使用eventusermodel api
这是一种非常有效的内存读取大文件的方法.它的工作原理是SAX解析器(而不是DOM),因为它会在遇到特定数据结构时调用回调方法.它可能会有点棘手,因为它希望你知道底层数据的细节
在这里,您可以找到关于此主题的精彩教程
希望这可以帮助!