我正在尝试读取大小为40MB至50MB的大型excel文件。
对于XLSX,我使用OPCPackage可以解决问题,但是现在我遇到了XLS格式的问题。
当我使用POIFSFileSystem之类的普通POI读取文件时,出现Java堆空间错误。
您能帮我解决这个问题吗?

基本上,我们将excel文件转换为制表符分隔的文件。

OPCPackage pkg = OPCPackage.open(sourceFile.getPath(),
            PackageAccess.READ);


让我知道您是否需要其他信息。

最佳答案

作为explained in the Apache POI documentation, don't open with an InputStream when you have a File!

对于.xls文件,您应确保使用的是新版本的Apache POI,然后使用new POIFSFileSystem(File)打开容器,例如

POIFSFileSystem fs = new POIFSFileSystem(new File("input.xls"));
// HSSF Event parsing code goes here


否则,如果需要考虑内存,请确保使用HSSF event api;如果需要确保检测到丢失的单元格,则可能使用record-aware event api

10-05 21:20