2016-08-24 3 views
0

У меня есть небольшая загадка при использовании getLastRowNum(). Я пытаюсь получить количество строк с данными из листа Excel. Предположим, что у меня есть 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()); 

My Excel лист состоит из следующих

enter image description here

С прикрепленным изображением, я должен получать количество строк в 4, но я получаю 6 вместо.

Любые советы глубоко оценены. Заранее спасибо.

ответ

2

Говоря о прикрепленном файле, он должен возвращать номер строки из 3, потому что XSSFSheet.getLastRowNum() основан на нулевом значении. Но если у вас получится число 6, кажется, у вас есть 3 дополнительных пустых строки на вашем листе.

Если вы только что открыли существующий файл и содержат пустые строки, вот example как его очистить. Но если вы заполнили таблицу самостоятельно, кажется, вам нужно проверить код для мест, где может быть создана эта пустая строка.

+0

Привет, @ Константин, спасибо вам за отзыв. Моя ошибка, она должна вернуться 3. Что касается дополнительных пустых строк, могу ли я посоветовать о том, как удалить пустые строки, и чтобы в будущем, независимо от того, сколько строк я добавляю, это даст мне правильный подсчет строк? Еще раз спасибо – lamCM

+0

@lamCM Выберите строки 5-7 в Excel, удалите их и сохраните книгу. Однако ваш код будет по-прежнему восприимчивым к таким проблемам, поэтому лучше не полагаться на 'getLastRowNum()'. Итерируйте строки и проверьте, имеют ли они непустые данные. Вы можете перебирать назад из 'getLastRowNum()' до тех пор, пока не найдете непустую строку, если вы просто хотите найти последнюю строку значений, но у вас все еще могут быть пробелы/недостающие строки между другими строками, поэтому все зависит от на то, что вам нужно. – Andreas

+0

Другой способ получить количество строк - это итерация с конца, пока мы не получим первую непустую строку. И если индекс этой строки будет X, то верните X + 1 (не забывайте, что X основано на нуле) –

Смежные вопросы