getLastRowNum无法返回正确的行数

7

我在使用getLastRowNum()时遇到了小问题。我试图从一个Excel表格中获取有数据的行数。假设我有3行,它应该返回一条打印语句说有3行。我的问题是,无论我填充多少行,它都返回给我一个固定的数字。以下是代码摘录:

FileInputStream fis = new FileInputStream("C:\\Test Data\\Login.xlsx"); 
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheet("Login");
System.out.println("No. of rows : " + sheet.getLastRowNum());

我的 Excel 表格包含以下内容

输入图像描述

从附加的图片中,我应该得到行数为 4,但是实际上我得到的是 6。

非常感谢您给出的任何建议。

3个回答

9

谈到附件文件,由于XSSFSheet.getLastRowNum()是基于0的方式,因此它应该返回行号为3。但如果您收到数字6,则似乎在您的表中有3个额外的空行。

如果您只是打开现有文件并且其中包含空白行,则以下是示例如何清除它。但是,如果您自己填写表格,则需要检查代码中可能创建此空行的位置。


嗨@Konstantin,感谢您的反馈。我的错误,它应该返回3。关于额外的空白行,我能否请您建议如何消除空白行,并确保在将来无论我添加多少行,它都会给出正确的行数?再次感谢您。 - lamCM
@lamCM 在 Excel 中选择第5-7行,删除它们,然后再次保存工作簿。但是,您的代码仍然容易出现此类问题,因此最好不要依赖 getLastRowNum()。迭代行并检查它们是否具有非空数据。如果您只想找到最后一个有值的行,则可以从 getLastRowNum() 向后迭代直到找到非空行,但是您仍可能在其他行之间有空白/丢失行,因此这完全取决于您需要什么。 - Andreas
获取行数的另一种方法是从末尾迭代,直到找到第一个非空行。如果该行的索引为X,则返回X + 1(不要忘记,X是从零开始的)。 - Konstantin Labun
@Konstantin,我按照你的建议操作了,现在一切都很好!非常感谢你的帮助!真的非常感激你的努力! - lamCM

2

它应该返回3,

检查您的Excel文件中的空行并删除它们。

  • 点击“查找和选择”
  • 点击“特殊查找”
  • 选择“空白单元格”,然后点击“确定”
  • 删除工作表行

0

我曾经遇到过同样的问题,只需删除工作表最后一行(即第4行)以下的所有行并保存即可。这是一个快速解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接