Java – Leer archivo Excel

Para la letura de un archivo excel con extensión .xlsx usamos org.apache.poi cuya dependencia en Maven es la siguiente.

<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>3.16</version>
</dependency>




Este será el archivo de excel que leeremos.

El código:

package com.decodigo.ejemplos;

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author decodigo
 */
public class LeerExcel {
    public static void main(String args[]){
        try {
            String rutaArchivoExcel = "/ruta/ExcelEjemplo.xlsx";
            FileInputStream inputStream = new FileInputStream(new File(rutaArchivoExcel));
            Workbook workbook = new XSSFWorkbook(inputStream);
            Sheet firstSheet = workbook.getSheetAt(0);
            Iterator iterator = firstSheet.iterator();
            
            DataFormatter formatter = new DataFormatter();
            while (iterator.hasNext()) {
                Row nextRow = iterator.next();
                Iterator cellIterator = nextRow.cellIterator();
                while(cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    String contenidoCelda = formatter.formatCellValue(cell);
                    System.out.println("celda: " + contenidoCelda);
                }
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

A continuación mostramos las partes más interesantes del código, con XSSFWorkbook y un FileInputStream comenzamos la lectura del archivo

Workbook workbook = new XSSFWorkbook(inputStream);

Nuestra instancia workbook nos permite leer una hoja de excel, indicando el índice en el cual se encuentra la información.  En este ejemplo de una sola hoja especificamos el índice cero.

Sheet firstSheet = workbook.getSheetAt(0);

A continuación comenzamos a iterar sobre cada fila o renglón que contiene la hoja de excel.

Iterator iterator = firstSheet.iterator();

while (iterator.hasNext()) { …

Después iteramos sobre el renglón para obtener sus celdas.

Iterator cellIterator = nextRow.cellIterator();

while(cellIterator.hasNext()) { …

Al obtener el valor de cada celda, también le estamos dando formato para poder mostrarlo como una cadena, de lo contrario tenemos que obtener el tipo de dato de cada celda antes de usar el método específico que permita extraer su valor de acuerdo a su tipo.  Con este paso nos saltamos esa validación previa.

String contenidoCelda = formatter.formatCellValue(cell);

Si corremos el ejemplo obtenemos este resultado:

El ejemplo es muy sencillo, pero te permitirá comenzar fácilmente con la lectura de archivos de Excel.