对于我正在进行的业余爱好项目,我想使用Apache POI来更新,评估和检索Excel文件的结果。通常,只有少数单元格与此相关,其余单元格占用大量空间,导致打开文件时出现性能问题。我们说我有以下结构
现在,我希望能够更新B2:B10和C2:C10并获取A1的更新值。我不在乎其他数据。为了优化文件的大小,我想将所有其他单元格更新为null
并保存文件。例如,在上面的例子中:从表格中删除列D,E和F" First" +删除表"秒"。
实现此目的的一种方法是实现类似下面的伪代码(假设没有循环引用)
Take set of cells I want to evaluate (e.g., A1) as "relevantCells"
For each cell in "relevantCells"
Retrive all cells in the formulae and add to "relevantCells"
For each cell in workbook
Check if cell is in "relevantCells"
if(yes) continue
else set cell to null
Save workbook
是否有更好的方法让Apache POI自动删除所有不相关的单元格,以便检索一组单元格的更新值?
答案 0 :(得分:1)
看看event-based reading of files的API,这样你就可以以流式方式读取文件(即使在非常大的文件上也没有OOM),只能将“有趣的部分”写入第二个工作簿,随着你的进展,你建立起来。