【问题标题】:Reading large XLS and XLSX excel format读取大型 XLS 和 XLSX excel 格式
【发布时间】:2023-03-29 09:31:02
【问题描述】:

我正在尝试读取大小约为 40MB 到 50MB 的大型 Excel 文件。
对于 XLSX,我使用 OPCPackage 它解决了问题,但现在我遇到了 XLS 格式的问题。
当我使用像 POIFSFileSystem 这样的普通 POI 读取文件时,我收到 java heap space error
你能帮我解决这个问题吗?

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

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

如果您需要任何其他信息,请告诉我。

【问题讨论】:

  • 使用 HSSFListener 处理文件。

标签: java apache-poi


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复。我想在理想的系统上测试它。而且我试过了,但仍然是同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多