读取大型XLS和XLSX excel格式

时间:2016-06-07 18:14:10

标签: java apache-poi

我正在尝试阅读大小在40MB到50MB之间的大型excel文件 对于XLSX,我使用OPCPackage解决了这个问题,但现在我遇到了XLS格式的问题 当我使用像POIFSFileSystem这样的普通POI来读取文件时,我得到java 堆空间错误
你能帮我解决这个问题吗?

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

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

如果您需要任何其他信息,请与我们联系。

2 个答案:

答案 0 :(得分:2)

作为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

答案 1 :(得分:0)

执行程序时,需要使用-Xmx2g指定更大的最大堆大小(最大值为2 gig)。见“man java”。