如何使用Apache POI优化Excel工作簿

对于我正在开发的一个业余爱好项目,我想使用Apache POI来更新,评估和检索Excel文件中的结果。 通常情况下,只有less数几个单元格与此相关,其余单元格占用大量空间,导致打开文件时出现性能问题。 假设我有以下结构

  • A1含有SUMPRODUCT(B2:B10; C2:C10)
  • 在“D”,“E”和“F”列有一些随机数字的“首先”
  • 在多个单元中使用一些随机数据“第二个”表

现在,我想能够更新B2:B10和C2:C10并获取A1的更新值。 我不在乎其他数据。 要优化文件的大小,我想将所有其他单元格更新为null并保存该文件。 例如,在上面的例子中:从表“第一个”删除列D,E和F +删除表“第二个”。

一种方法是实现类似下面的伪代码(假设没有循环引用)

 Take set of cells I want to evaluate (eg, 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自动删除所有不相关的单元格,以便为一组单元格检索更新的值?

看一下基于事件的API 读取文件的方式 ,这样你就可以以stream的方式读取文件(即使是非常大的文件也没有OOM),只把“有趣的部分”写进第二个工作簿,你随着你的步伐而build立。