En este tutorial vamos a explicar cómo leer el contenido de un fichero excel desde Java utilizando la librerías de Apache POI
Antes de comenzar a trabajar hay que saber si se va a leer un fichero excel con extensión “xls”, que se corresponde con ficheros excel 97 al 2007, o un fichero Excel con extensión “xlsx”, versiones mayores al 2007. En función del tipo de fichero Excel con el que vamos a trabajar deberemos utilizar unas clases u otras.
Lectura ficheros Excel 97-2007 (.xls)
Para la lectura de este tipo de ficheros excel vamos a utilizar el API de POI-HSSF. Para descargar el fichero “poi-3.11.jar” hay que acceder a la página de descargas de apache.
Una vez tenemos el fichero “poi-3.11.jar” o el correspondiente con la versión más actual lo incluimos el proyecto java. El siguiente código muestra cómo leer todas las filas de una hoja excel:
Java |copy code |?
01 02 import java.io.File;03 import java.io.FileInputStream;04 import java.io.IOException;05 import java.util.Iterator;06 07 import org.apache.poi.hssf.usermodel.HSSFSheet;08 import org.apache.poi.hssf.usermodel.HSSFWorkbook;09 import org.apache.poi.ss.usermodel.Cell;10 import org.apache.poi.ss.usermodel.Row;11 12 public class LeerExcel {13 14 public static void main(String args[]) throws IOException{15 FileInputStream file = new FileInputStream(new File("C:\\prueb_excel.xls"));16 // Crear el objeto que tendra el libro de Excel
17 HSSFWorkbook workbook = new HSSFWorkbook(file);18 19 /*
20 * Obtenemos la primera pestaña a la que se quiera procesar indicando el indice.
21 * Una vez obtenida la hoja excel con las filas que se quieren leer obtenemos el iterator
22 * que nos permite recorrer cada una de las filas que contiene.
23 */
24 HSSFSheet sheet = workbook.getSheetAt(0);25 Iterator<Row> rowIterator = sheet.iterator();26 27 Row row;
28 // Recorremos todas las filas para mostrar el contenido de cada celda
29 while (rowIterator.hasNext()){30 row = rowIterator.next();31 32 // Obtenemos el iterator que permite recorres todas las celdas de una fila
33 Iterator<Cell> cellIterator = row.cellIterator();34 Cell celda;
35 36 while (cellIterator.hasNext()){37 celda = cellIterator.next();38 39 // Dependiendo del formato de la celda el valor se debe mostrar como String, Fecha, boolean, entero...
40 switch(celda.getCellType()) {41 case Cell.CELL_TYPE_NUMERIC:42 if( HSSFDateUtil.isCellDateFormatted(celda) ){43 System.out.println(celda.getDateCellValue());44 }else{45 System.out.println(celda.getNumericCellValue());46 }
47 System.out.println(celda.getNumericCellValue());48 break;49 case Cell.CELL_TYPE_STRING:50 System.out.println(celda.getStringCellValue());51 break;52 case Cell.CELL_TYPE_BOOLEAN:53 System.out.println(celda.getBooleanCellValue());54 break;55 }
56 }
57 }
58 59 // cerramos el libro excel
60 workbook.close();61 }
62 63 }
64
Lectura ficheros Excel (.xlsx)
Para poder trabajar con ficheros excel con extensión ‘.xlsx’ debemos añadir las siguientes librerías en nuestro proyecto java:
- poi-3.11.jar
- poi-ooxml-3.11.jar
- poi-ooxml-schemas-3.11.jar
- xmlbeans-2.6-0.jar
Tras incluir las librerías anteriores en nuestro proyecto Jata, y con el siguiente código recorreríamos todas las celdas contenidas en las primera hoja del libro excel.
Java |copy code |?
01 02 import java.io.File;03 import java.io.FileInputStream;04 import java.io.IOException;05 import java.util.Iterator;06 07 import org.apache.poi.ss.usermodel.Cell;08 import org.apache.poi.ss.usermodel.Row;09 import org.apache.poi.xssf.usermodel.XSSFSheet;10 import org.apache.poi.xssf.usermodel.XSSFWorkbook;11 12 public class LeerExcel {13 14 public static void main(String args[]) throws IOException{15 FileInputStream file = new FileInputStream(new File("C:\\prueb_excel.xls"));16 // Crear el objeto que tendra el libro de Excel
17 XSSFWorkbook workbook = new XSSFWorkbook(file);18 19 /*
20 * Obtenemos la primera pestaña a la que se quiera procesar indicando el indice.
21 * Una vez obtenida la hoja excel con las filas que se quieren leer obtenemos el iterator
22 * que nos permite recorrer cada una de las filas que contiene.
23 */
24 XSSFSheet sheet = workbook.getSheetAt(0);25 Iterator<Row> rowIterator = sheet.iterator();26 27 Row row;
28 // Recorremos todas las filas para mostrar el contenido de cada celda
29 while (rowIterator.hasNext()){30 row = rowIterator.next();31 32 // Obtenemos el iterator que permite recorres todas las celdas de una fila
33 Iterator<Cell> cellIterator = row.cellIterator();34 Cell celda;
35 36 while (cellIterator.hasNext()){37 celda = cellIterator.next();38 39 // Dependiendo del formato de la celda el valor se debe mostrar como String, Fecha, boolean, entero...
40 switch(celda.getCellType()) {41 case Cell.CELL_TYPE_NUMERIC:42 if( DateUtil.isCellDateFormatted(celda) ){43 System.out.println(celda.getDateCellValue());44 }else{45 System.out.println(celda.getNumericCellValue());46 }
47 break;48 case Cell.CELL_TYPE_STRING:49 System.out.println(celda.getStringCellValue());50 break;51 case Cell.CELL_TYPE_BOOLEAN:52 System.out.println(celda.getBooleanCellValue());53 break;54 }
55 }
56 }
57 58 // cerramos el libro excel
59 workbook.close();60 }
61 62 }
63
Deja tu comentario