Te sugerimos que revises esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
Pruebe Sheet.getPhysicalNumberOfRows()
Ya que Sheet.getPhysicalNumberOfRows()
no cuenta las filas vacías y Sheet.getLastRowNum()
devuelve 0 tanto si hay una fila como si no hay filas, utilizo una combinación de los dos métodos para calcular con precisión el número total de filas.
int rowTotal = sheet.getLastRowNum();
if ((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0))
rowTotal++;
Nota: Esto tratará una hoja de cálculo con una fila vacía como si no tuviera ninguna, pero para la mayoría de los propósitos probablemente esté bien.
Si haces un control
if
(getLastRowNum()<1)
res="Sheet Cannot be empty";
return
Esto asegurará que tenga al menos una fila con datos excepto el encabezado. A continuación se muestra mi programa que funciona bien. El archivo de Excel tiene tres columnas, es decir. DNI, NOMBRE, APELLIDO
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;
Nos puedes añadir valor a nuestra información dando tu experiencia en las ilustraciones.