Нахождение последней строки в электронной таблице Excel

Я пытаюсь найти индекс последней строки в электронной таблице Excel с помощью ПОИ Apache для Java.

Я думал, что это должно быть возможно с getLastRowNum() или getPhysicalNumberOfRows() но они, кажется, не дают правильные результаты. Например, у меня есть одна электронная таблица строки, и эти две функции возвращают значение 1140. Еще две электронных таблицы строки получают значение 1162.

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

Так существует ли способ найти индекс последней строки? Я предполагаю, что мог сделать это требованием, чтобы не иметь пустые строки между данными, но я надеялся на лучшее решение.

Править: Для записи с помощью итератора не помог. Это просто выполнило итерации по предполагаемым строкам 1140/1162.

13
задан f_puras 15 June 2015 в 19:22
поделиться

2 ответа

Я получаю ожидаемый результат, используя poi-3.6-20091214 и test.xls с двумя пустыми строками, за которыми следуют три занятые строки:

InputStream myxls = new FileInputStream("test.xls");
Workbook book = new HSSFWorkbook(myxls);
Sheet sheet = book.getSheetAt(0);
System.out.println(sheet.getLastRowNum());

Вывод: 4

12
ответ дан 1 December 2019 в 22:56
поделиться

Я знаю, как решить вашу проблему с помощью VBA, но не знаю, как получить эквивалентную информацию из интерфейса Apache POI. В VBA, чтобы получить диапазон используемых ячеек на листе «Sheet1», используйте:

Worksheets("Sheet1").UsedRange

Это возвращает объект Range , который имеет свойства, которые предоставляют дополнительную информацию. Например, чтобы получить количество строк в этом диапазоне , используйте:

Worksheets("Sheet1").UsedRange.Rows

Опять же, я не уверен, доступно ли это через API POI, но если нет, возможно, он предоставляет способ выполнение произвольных фрагментов VBA?

1
ответ дан 1 December 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: