Я пытаюсь найти индекс последней строки в электронной таблице Excel с помощью ПОИ Apache для Java.
Я думал, что это должно быть возможно с getLastRowNum()
или getPhysicalNumberOfRows()
но они, кажется, не дают правильные результаты. Например, у меня есть одна электронная таблица строки, и эти две функции возвращают значение 1140. Еще две электронных таблицы строки получают значение 1162.
Другая проблема состоит в том, что я не могу только искать первую пустую строку, так как может быть возможно иметь пустые строки между строками допустимых данных.
Так существует ли способ найти индекс последней строки? Я предполагаю, что мог сделать это требованием, чтобы не иметь пустые строки между данными, но я надеялся на лучшее решение.
Править: Для записи с помощью итератора не помог. Это просто выполнило итерации по предполагаемым строкам 1140/1162.
Я получаю ожидаемый результат, используя 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
Я знаю, как решить вашу проблему с помощью VBA, но не знаю, как получить эквивалентную информацию из интерфейса Apache POI. В VBA, чтобы получить диапазон используемых ячеек на листе «Sheet1», используйте:
Worksheets("Sheet1").UsedRange
Это возвращает объект Range
, который имеет свойства, которые предоставляют дополнительную информацию. Например, чтобы получить количество строк в этом диапазоне
, используйте:
Worksheets("Sheet1").UsedRange.Rows
Опять же, я не уверен, доступно ли это через API POI, но если нет, возможно, он предоставляет способ выполнение произвольных фрагментов VBA?