我正在使用Apache POI java并希望获得非空的总行数 . 我用其所有列成功处理了整行 . 现在我假设我得到一个包含多行而不是一行的excel表...那么如何去做呢?我想要获得总行数(int n)然后循环直到i <= n但不确定 .
建议最受欢迎:)
注意:Apache POI版本为3.8 . 我不处理Xlsx格式...只有xls .
是的我尝试了这个代码,但得到了20个....这是不可能的,因为我只有5行
FileInputStream fileInputStream = new FileInputStream("COD.xls");
HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
HSSFSheet worksheet = workbook.getSheet("COD");
HSSFRow row1 = worksheet.getRow(3);
Iterator rows = worksheet.rowIterator();
int noOfRows = 0;
while( rows.hasNext() ) {
HSSFRow row = (HSSFRow) rows.next();
noOfRows++;
}
System.out.println("Number of Rows: " + noOfRows);
5 回答
此方法将为您提供填充行的最后一个行号,即使您已填充5行,也可能存在您可能在剩余的15行或第21行填充某些空格的情况,因为它给最后一行编号为20 .
可能存在这样的情况:在每第5行输入数据(从1开始),然后您的第5行将在第21行,所以再次,如果您使用此方法,您将获得20个结果 .
问题是POI将空行视为物理行 . 这种情况有时会发生在Excel中,虽然它们对眼睛不可见,但行确实存在 .
如果您打开Excel工作表并选择数据下面的所有内容,然后将其删除(我知道它看起来是空的,但无论如何都要这样做),POI将返回正确的数字 .
你可能想要除getLastRowNum()以外的getPhysicalNumberOfRows()?
您可以使用以下方法迭代非空的行:
谢谢