Microsoft Open XML使用SAX方法逐行读取Excel文件并查找单元格数据

我已经在stockoverflow看了几个post,但我没有find我正在寻找的东西,而我发现这些东西closures似乎并没有为我工作。 使用OpenXmlReader不会读取行,因为它似乎永远不会打开表单数据的行元素types永远找不到。

我需要使用使用OpenXmlPartReader的SAX方法。 我要做的是打开Excel文档并逐行阅读。 对于每一行,我需要通过索引号或id和该单元格中的值来获取几个单元格。 所以我不需要遍历每一个我知道我需要哪个单元的单元。

我想要使​​用SAX方法来避免内存不足,因为我预计需要读取大文件。

我有类似的问题要解决。 在结合了几个在SO中find的相关答案之后,我编写了一个自定义的sax reader,它能够从第一张表中提取所有的行。

看看我的xlsx-sax-exporter github项目,让我知道它是如何工作的。

阅读器打开工作表的速度非常快,并且在构build时通过检查SheetDimensions参考来计算其尺寸。

也可以在检查工作簿的单元格和编号格式后格式化数字和date。 它甚至试图覆盖默认编号格式的情况。

读者使用分页是因为我想支持在服务器上提取分页结果,如果所有页面都是按顺序检索的,那么效果最好。 由于萨克斯stream和内存使用率保持在较低水平,所以预期的速度非常快。 在没有保留内存行的情况下对其进行基准testing,从未使用超过10 MB(发行版)。

如果你有改变build议,或者只是打开一个问题,随意分叉和发送拉请求,当我有时间时,我会尽量照顾它。