大型Excel文件-上载和导入-Java

大型Excel文件-上载和导入-Java,java,apache-poi,Java,Apache Poi,全部 我想上传一个包含超过一百万条记录的大型excel文件,并将其导入我的Java程序 我可以使用ApachePOI轻松地将小文件导入到我的系统中,但当我开始使用大文件时,应用程序抛出内存不足错误 我搜索了谷歌,在谷歌上找到了很多帖子,所以我尝试了所有的方法,但都没能解决这个问题。 有人能为我的特殊问题提供解决方案吗?导入时间对我来说不是问题,现在我也能忍受性能问题 只想在没有oem错误的情况下将此数据导入现有系统 我的系统配置非常好,java有足够的内存,所以硬件不是问题。 谢谢您将希望流式传

全部

我想上传一个包含超过一百万条记录的大型excel文件,并将其导入我的Java程序

我可以使用ApachePOI轻松地将小文件导入到我的系统中,但当我开始使用大文件时,应用程序抛出内存不足错误

我搜索了谷歌,在谷歌上找到了很多帖子,所以我尝试了所有的方法,但都没能解决这个问题。

有人能为我的特殊问题提供解决方案吗?导入时间对我来说不是问题,现在我也能忍受性能问题

只想在没有oem错误的情况下将此数据导入现有系统

我的系统配置非常好,java有足够的内存,所以硬件不是问题。


谢谢

您将希望流式传输数据,这样就不需要一次将所有记录存储在内存中。POI支持流式传输(请参阅)。在读取数据时,将其发送到需要的任何位置(数据库或未指定的任何位置)——使用流式API,您不应该在处理数据之前将所有数据读取到内存中


您也可以将数据导出到CSV文件,然后使用常规的
FileInputStream
读取文件并在读取时处理每条记录。

hi已使用SXSSF,它只能写,当我尝试读取时,它会从单元格中为我提供所有空白值。对,抱歉,我编辑了指向XSSF的答案。你能导出到CSV吗?这可能会简单得多,我也遇到过类似的问题,POIAPI只是一个内存占用器。最简单的方法是将excel作为zip文件打开,然后使用SAX解析器解析工作表