【发布时间】:2018-05-09 03:41:34
【问题描述】:
我一直在尝试将大量数据放入一个 Excel 文件 HSSFWorkbook, (约 900 万行),我认为 JVM 内存无法处理它。
所以我想将excel文件中的行分块写入以节省内存。 我的想法是重复追加行块。
但是,在查询 excel 文件中的数据时,我似乎必须再次将数据读入内存,这违背了我的目的。
我如何做到这一点?
“基本上,如何在不读取现有 excel 文件的情况下追加行块?”
【问题讨论】:
-
这将不允许您附加到现有工作簿(据我所知),但它将允许您流式传输到新工作簿:poi.apache.org/apidocs/org/apache/poi/xssf/streaming/…
-
如果您真的想节省内存,您可以改用 CSV,并使用脚本将文本附加到其中。话虽如此,xslx 也是一种文本(基于 XML)格式,因此您应该能够在没有 POI 或其带来的限制的情况下执行此操作。唯一的问题是您的数据接收器是如何设计的?
-
感谢@tgdavies,作为答案发布,以便我投票。
标签: java memory-management apache-poi