如何使用apachi POI java从excel中获取不包括空格(空行)的总行数?

如何使用apachi POI java从excel中获取不包括空格(空行)的总行数?,java,arraylist,apache-poi,Java,Arraylist,Apache Poi,我必须迭代行并将其添加到列表中,但我得到的总行数是excel工作表中的总行数,即1001行,但我只有3行,包括标题,我必须使用行数的大小停止循环 我的密码是 Sheet sheet = workbook.getSheetAt(0); int maxNumOfCells = sheet.getRow(0).getLastCellNum(); // The the maximum number of columns int totalRows = sheet.

我必须迭代行并将其添加到列表中,但我得到的总行数是excel工作表中的总行数,即1001行,但我只有3行,包括标题,我必须使用行数的大小停止循环

我的密码是

     Sheet sheet = workbook.getSheetAt(0);
     int maxNumOfCells = sheet.getRow(0).getLastCellNum();
     // The the maximum number of columns
     int totalRows = sheet.getLastRowNum(); 
     // or  sheet.getPhysicalNumberOfRows();  
两者都返回工作表中的所有行,而不是仅返回包含数据的行


它应该返回不包括空白行的totalRows.?

我猜您是从带有POI的excel中读取的。没有快捷方式可以知道整行是否为空。您必须按行运行循环,然后检查单元格值(按列),以获得包含有意义数据的实际行数

在这种情况下,sheet.getLastRowNum()将为您提供循环限制。在读取单元格时,不要忘记处理空指针。

从:

getPhysicalNumberOfRows()
-返回物理定义的行数(而不是工作表中的行数)

例如:

InputStream fs = new FileInputStream("test.xls");
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
sheet.getPhysicalNumberOfRows()); 

@DeepikaRajani这不是暴力解决方案吗?应该有更简单的办法。因为如果OP需要使用该解决方案,他必须检查所有行中的所有单元格。性能将受到影响。通常,如果行为空,对
getRow(n)
的调用将返回null。但不能确定excel如何处理可能已空白但未删除的空单元格/行。空白单元格不一定是空的,因此最好检查所有行中的所有单元格。在某些情况下,这也会返回空行(经经验验证),因此这不是解决方案。getPhysicalNumberOfRows()不保证排除空行,即包含空单元格的行。