2016-08-24 450 views
0

私はgetLastRowNum()を使用する際に小さな問題を抱えています。 Excelシートからデータを含む行数を取得しようとしています。私は3行を持っていると仮定すると、それは3行を記載しているprint out文で返されます。今の私の問題は、私が人口が何列にもかかわらず、それは私に特定の固定数を返しています。次のコードの抜粋です。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

添付ファイルについて言えば、XSSFSheet.getLastRowNum()が0ベースのため、行番号3が返されます。しかし、あなたが6の番号を受け取る場合は、あなたのシートに3つの空白の行があるようです。

既存のファイルを開いていて空白の行が含まれている場合は、ここをクリックしてexampleを削除します。しかし、自分でテーブルを埋めると、この空の行を作成できる場所のコードをチェックする必要があるようです。

+0

こんにちは@コンスタンチン、ご意見ありがとうございます。私の間違いは、3を返す必要があります。空白の行を追加する方法については、空白の行を削除する方法についてのアドバイスがあります。将来、追加する行の数に関係なく、正しい行数?もう一度ありがとうございます – lamCM

+0

@lamCM Excelで5-7行を選択し、それらを削除して、再度ブックを保存してください。しかし、あなたのコードはまだそのような問題の影響を受けやすいので、 'getLastRowNum()'に依存しないほうが良いでしょう。行を繰り返し、空でないデータがあるかどうかを確認します。最後のvalue-rowを探したいだけならば、空白でない行を見つけるまでgetLastRowNum()から逆に反復することができますが、他の行の間に空白/行が残っている可能性がありますあなたが必要とするものについて – Andreas

+0

行数を取得する別の方法は、最初から非空白の行が得られるまで、最後から反復することです。そして、この行のインデックスがXの場合、X + 1を返します(Xはゼロに基づいています)。 –

関連する問題