Как получить количество строк в файле Excel с помощью библиотеки POI?

ребята, в настоящее время я использую библиотеку POI 3.9 для работы с файлами excel. Я знаю о getLastRowNum() функция, которая возвращает несколько строк в файле Excel.

единственная проблема-это getLastRowNum() возвращает число с числом, начинающимся с 0.

Итак, если файл Excel использует первые 3 строки,getLastRowNum() возвращает 2. Если файл Excel имеет только 1 строку, getLastRowNum() возвращает 0.

проблема возникает, когда файл Excel полностью пуст. getLastRowNum() по-прежнему возвращает 0, так Я не могу определить, имеет ли файл Excel 1 строку данных или пуст.

Итак, как я могу определить, является ли файл Excel пустым или нет ?

4 ответов



Если вы делаете проверку

if
(getLastRowNum()<1){
 res="Sheet Cannot be empty";
return
}

Это гарантирует, что у вас есть хотя бы одна строка с данными, кроме заголовка. Ниже приведена моя программа, которая отлично работает. Файл Excel имеет три столбца ie. ID , ИМЯ, ФАМИЛИЯ

XSSFWorkbook workbook = new XSSFWorkbook(inputstream);
        XSSFSheet sheet = workbook.getSheetAt(0);
        Row header = sheet.getRow(0);
        int n = header.getLastCellNum();
        String header1 = header.getCell(0).getStringCellValue();
        String header2 = header.getCell(1).getStringCellValue();
        String header3 = header.getCell(2).getStringCellValue();
        if (header1.equals("ID") && header2.equals("NAME")
                && header3.equals("LASTNAME")) {
            if(sheet.getLastRowNum()<1){
                System.out.println("Sheet empty");
                         return;
            }   
                        iterate over sheet to get cell values
        }else{
                          SOP("invalid format");
                          return;
                          }

есть две вещи, которые вы можете сделать

использовать

int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells();

или

int noOfColumns = sh.getRow(0).getLastCellNum();

есть тонкая разница между ними

  1. Вариант 1 дает нет столбцов, которые фактически заполнены содержимым (если 2-й столбец из 10 столбцов не заполнен, вы получите 9)

  2. Вариант 2 просто дает вам индекс последнего столбца. Значит сделано 'getLastCellNum()'


С Sheet.getPhysicalNumberOfRows() не считает пустые строки и Sheet.getLastRowNum() возвращает 0 оба если есть одна строка или нет строк, я использую комбинацию двух методов для точного вычисления общего количества строк.

int rowTotal = sheet.getLastRowNum();

if ((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0)) {
    rowTotal++;
}

Примечание: это будет рассматривать таблицу с одной пустой строкой как не имеющую ничего, но для большинства целей это, вероятно, нормально.