如何使用 Apache POI 事件模型 API 从 .xlsx 文件中获取总行数

问题描述

我指的是本文档 https://poi.apache.org/components/spreadsheet/how-to.html#xssf_sax_api 来读取大型 excel (.xlsx) 文件。我能够使用这种方法读取整个 .xlsx 文件,但在从文件中读取记录时仍然坚持获取总行数。

根据要求,用户正在上传 .xlsx 文件,并且数据始终在 excel 的第一列 (A) 中可用。我从 .xlsx 文件中一一读取记录并发送到队列。但我也想将每次发送数据的记录总数发送到队列中。

我几乎花了 3 个小时来解决这个问题,但没有找到合适的代码

任何帮助将不胜感激。

解决方法

POI 示例中有第二个流媒体示例。 http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/examples/xssf/eventusermodel/XLSX2CSV.java

这个使用不同的流接口,暴露带有行号的 startRow 和 endRow 事件。

另一种方法是使用 excel-streaming-reader - 请参阅示例(https://github.com/pjfanning/excel-streaming-reader-sample/blob/master/src/main/java/com/github/pjfanning/poi/sample/StreamingRead.java) - 可以修改它以记录最后一行的最后一个 'getRowNum()' 值。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...