如何加载500 MB excel POI工作簿并从中删除工作表。而没有内存问题?

时间:2019-04-09 13:54:22

标签: java apache-poi

试图将500 MB的.xlsm文件加载到内存中,然后从中删除特定的表。

OPCPackage pkg = OPCPackage.open("C:\\PROJECTS\\test.xlsm");
             XSSFWorkbook wb = new XSSFWorkbook(pkg);
             SXSSFWorkbook wb1 = new SXSSFWorkbook(wb, 100);

将pkg加载到工作簿时内存不足。

还有其他替代方法可以加载如此大的文件而不会出现内存问题吗?

我们还使用解析器概念对同一xlsm文件执行了另一个读取逻辑,即 org.apache.xerces.parsers.SAXParser

工作正常。是否有可能使用解析器概念来更改Excel工作表?

1 个答案:

答案 0 :(得分:1)

只需使用更多内存启动JVM。 What are the -Xms and -Xmx parameters when starting JVM?

如果要加载500MB的文件,则需要比JVM的500MB多得多的内存。尝试从java -Xms2048m -Xmx4096m开始。