有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java需要创建一个大型应用程序。使用ApachePOI的xls电子表格,堆内存使用有限

我需要从一个内部数据库中提取数据并存储在一个数据库中。xls电子表格。我已经使用ApachePOI实现了这一点,我一次检索一行数据,并将其作为一行添加到新创建的电子表格中,在写入最后一行之后,我使用fileoutputstream保存工作簿

这很好,问题是有时要创建的电子表格可能多达200000行,每行由100列组成,所以我的理解是,在创建工作簿时,整个内容都存储在堆内存中,直到我将其保存到文件中,因此,没有足够的堆内存来为非常大的电子表格执行此操作

所以我基本上想做的是:

Create Spreadsheet and save to file.
For each row
    Open Spreadsheet File
    Add Row
    Save to File

这样我们就不会使用越来越多的堆内存

我可以看到如何重新打开工作簿,并在内存中添加新行,但我不清楚如何重新保存修改后的工作簿,也不清楚工作表是否会随着文件的打开而读取所有数据,这使我的想法毫无意义

我也可以看到一些poi API,但它们似乎不适合实际应用。xls格式,这是我想要使用的最大兼容性

将大量行写入的正确方法是什么。xls电子表格使用有限的内存。本质上类似于将数据附加到文本文件


共 (0) 个答案