当前位置: 首页 > 知识库问答 >
问题:

读取大型Excel文件.xlsx

叶元凯
2023-03-14

我在用图书馆

org.apache.poi 


XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);

我在努力

org.xml.sax

库,但无法将其转换为工作簿

注意:在最终结果中,我希望返回XSSFWorkbook

上面的代码会内存溢出,任何帮助都将提前感谢

共有2个答案

滕夜洛
2023-03-14
InputStream is = new FileInputStream(new File("yourXLSX file path"));
Workbook workbook = StreamingReader.builder().rowCacheSize(100).bufferSize(4096).open(is))
for (Sheet sheet: workbook) {
    //System.out.println(sheet.getSheetName());
    for (Row r: sheet) {
        for (Cell c: r) {
            //System.out.println(c.getStringCellValue());
        }
    }
}
鄂和璧
2023-03-14

如果输入数据对于可用内存来说太大,则有两个选项。

a)通过-Xmx java命令行选项提供更多内存

b)使用POI的Streaming-API。

选项 a) 如果文件最终适合内存,则很容易做到。如果文件对于可用的物理内存来说太大,则需要查看流式处理选项,尤其是示例 XLSX2CSV 显示了如何从任意大的.xlsx文件中读取数据,尽管具有一些需要访问多个单元格的功能,这些功能不是开箱即用的。

 类似资料:
  • 问题内容: 我正在尝试通过Apache POI读取大型Excel文件xlsx,例如40-50 MB。我的内存不足异常。当前的堆内存为3GB。 我可以阅读较小的excel文件,没有任何问题。我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回。 我首先开始使用, 但是每个Apache POI API的使用成本很高,因此我改用OPC封装方式,但效果仍然相同。我

  • 我可以使用Apache POI只读取Excel文件的第一行吗?我不想读取整个文件,因为它有50,000行,读取最多需要10分钟(性能是一场灾难)。我通过文件上传获取字节。我的选项是字节数组或InputStream。现在我正在这样做:

  • 我遵循这个http://blog.kondratev.pro/2015/08/reading-xlsx-on-android-4-and-hopefully.html对其进行了编码。 尝试逐行读取: 但结果却是:

  • 问题内容: 我的应用程序需要什么 1)读取.xls或.xlsx格式的大型excel文件 2)将每一列插入数据库中的一行,上一列作为下一列的父级 意味着如果我有5列和30,000行,那么我想插入1列作为父级, 第二列是第一列的子级,第三列是第二列的子级,依此类推…即树形结构 现在任何人都可以建议我最好的API以Java语言完成此操作。 经过一番谷歌搜索后,我发现现在有很多API,但这是最好的 参考见

  • 问题内容: 我正在尝试读取Excel文件(Office 2003)。有一个Excel文件需要上载并对其内容进行解析。 通过Google,我只能找到以下相关(且主题不足)的答案:生成Excel文件,读取Excel XML文件,读取Excel CSV文件或不完整的废弃项目。我拥有Office 2003,因此如果我需要那里的任何文件,都可以使用它们。它已安装在我的盒子上,但尚未安装,也无法安装在我的共享

  • 我正在尝试读取一个大的XLSX文件。Excel文件大约有500k行,我需要读col 2。 它一直打印到第39723行,然后抛出以下异常 main.java:484=If(!cell.getStringCellValue().ToString().trim().IsEmpty())如果我删除该行并只打印行号,就可以正常工作。我需要帮助如何获得col2的字符串值。