Как получить количество строк в файле 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 дает нет столбцов, которые фактически заполнены содержимым (если 2-й столбец из 10 столбцов не заполнен, вы получите 9)
Вариант 2 просто дает вам индекс последнего столбца. Значит сделано
'getLastCellNum()'
С Sheet.getPhysicalNumberOfRows()
не считает пустые строки и Sheet.getLastRowNum()
возвращает 0 оба если есть одна строка или нет строк, я использую комбинацию двух методов для точного вычисления общего количества строк.
int rowTotal = sheet.getLastRowNum();
if ((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0)) {
rowTotal++;
}
Примечание: это будет рассматривать таблицу с одной пустой строкой как не имеющую ничего, но для большинства целей это, вероятно, нормально.