Java 如何加载500 MB excel POI工作簿并从中删除工作表,而不会出现内存问题?

Java 如何加载500 MB excel POI工作簿并从中删除工作表,而不会出现内存问题?,java,apache-poi,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加载到工作簿时内存不足 有没有其他方法可以加载如此大的文件而不

正在尝试将500 MB的.xlsm文件加载到内存中,并从中删除特定的工作表

OPCPackage pkg = OPCPackage.open("C:\\PROJECTS\\test.xlsm");
             XSSFWorkbook wb = new XSSFWorkbook(pkg);
             SXSSFWorkbook wb1 = new SXSSFWorkbook(wb, 100);
将pkg加载到工作簿时内存不足

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

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


它工作得很好。是否有可能使用解析器概念更改excel工作表?

只需使用更多内存启动JVM即可。


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

并发用户也越来越多,在我的情况下,增加JVM会花费更多。。还有其他的解决办法吗?如果您希望在不将完整工作簿加载到内存的情况下使用类似解析器的概念,则需要获取特定的工作表并将其删除。感谢您提供的信息。让我尝试一下StreamingReader的概念,并在短期内更新我的结果。。