2016-08-24 114 views
0

我在使用getLastRowNum()方面有一個小難題。我試圖從Excel工作表中獲取數據的行數。假設我有3行,它應該在打印輸出語句中返回3行。現在我的問題是無論我填充多少行,它都會返回一個固定的數字。代碼的下面是摘錄:getLastRowNum沒有返回正確的行數

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工作表包含以下

enter image description here

從附加圖像的,我應該得到的4行數,但是我得到6代替。

任何意見深表讚賞。先謝謝你。

回答

2

說到附件,它應該返回行號3,因爲XSSFSheet.getLastRowNum()是從零開始的。但是,如果您收到6個數字,您的工作表中似乎有3個額外的空白行。

如果你只是打開現有的文件,它包含空行,這裏是example如何清除它。但是如果你自己填充表格,看起來你需要檢查你的代碼,找到可以創建空行的地方。

+0

嗨@Konstantin,非常感謝您的反饋。我的錯誤,它應該返回3.關於額外的空白行,我可以告訴你如何消除空行,並確保將來無論我添加多少行,它都會給我正確的行數?再次感謝 – lamCM

+0

@lamCM在Excel中選擇第5-7行,刪除它們並再次保存工作簿。但是,你的代碼仍然會受到這些問題的影響,所以最好不要依賴'getLastRowNum()'。迭代行並檢查它們是否有非空白數據。你可以從'getLastRowNum()'向後迭代,直到你找到一個非空行,如果你只是想找到最後一個值行,但是在其他行之間仍然有空白/缺失的行,所有這些都取決於你需要什麼。 – Andreas

+0

獲得行數的另一種方法是從結尾迭代,直到獲得第一個非空行。如果該行的索引爲X,則返回X + 1(不要忘記,X基於零) –