gpt4 book ai didi

java - 如何使用 SXSSF Streaming api 编辑现有的大型 Excel 文件

转载 作者:行者123 更新时间:2023-12-02 09:23:31 26 4
gpt4 key购买 nike

我有一个包含 400,000 行的大型 .xlsx Excel 工作表。我想在这个现有的工作簿中阅读和写作。

当我尝试使用 Apache poi 在 java 中读取它时,代码如下:

FileInputStream fileInputStream = new FileInputStream(new File(excelPath));
Workbook wb = new XSSFWorkbook(fileInputStream);

此代码的第二行占用 RAM 高达 5GB。

Apache POI 提供了 SXSSF Streaming API 来处理大型 Excel 文件。

http://poi.apache.org/components/spreadsheet/how-to.html#sxssf

现在,当我使用不带任何参数的构造函数实例化 SXSSF 工作簿时,它会创建新的工作簿,并且不会保留工作簿的现有数据。 SXSSF 工作簿的其他构造函数采用 XSSF 工作簿的实例。问题就从这里开始出现。当我为 Excel 文件创建 XSSF 工作簿实例时,RAM 变高并抛出 OUTOFMEMORY 异常。

有没有办法对现有的超过 400,000 行的大型 Excel 工作簿进行读写操作。

最佳答案

查看Overview的“POI”页面底部。它有这个表:

电子表格 API 功能摘要 table

最后一列显示SXSSF只能写入文件,不能读取文件。

要读取文件、流式传输,第三列显示需要使用XSSF eventmodel

因此,要修改文件、流式传输,以免使用大量内存,您需要使用一个 API 读取并使用另一个 API 写入新文件。

关于java - 如何使用 SXSSF Streaming api 编辑现有的大型 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58500415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com