Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 2

Если вы сделаете чек

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

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

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;
                          }

Ответ 3

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

использование

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

или

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

Существует отличная разница между ними

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

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

Ответ 4

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

int rowTotal = sheet.getLastRowNum();

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

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

Ответ 5

Чтобы найти последнюю строку данных, в случае, если вы создали шаблон таблицы в Excel, где он заполнен частично или между строками пустые. Логика:

int count = 0;
int emptyrow=0;
int irow=0;
while (rowIterator.hasNext()) {
    row = (Row) rowIterator.next();
    if (count != 0 && !checkIfRowIsEmpty(row)) { }
    else{
        if(count!=0 && emptyrow==irow){
            emptyrow++;
        }else{
            emptyrow=0;
            irow=0;
        }
    }
    if(emptyrow>0){
        irow++;
    }
    if(emptyrow>3){
        break;
    }
    count++;
}