HERRAMIENTAS EXCEL

Cómo leer archivos Excel en Java (Tutorial)

Chaknith Bin
Chaknith Bin
23 de febrero, 2023
Compartir:

¿Qué es Excel?

Microsoft Excel Workbook es un software basado en hojas de cálculo que permite a sus usuarios organizar y almacenar datos de forma eficaz. Almacena y organiza los datos en forma tabular, es decir, mediante filas y columnas. La celda de una hoja de cálculo Excel es el cuadro que contiene los datos y puede manipularse con diferentes estilos, formatos y fórmulas.

¿Cómo leer archivos Excel en Java?

La lectura de un archivo Excel puede resultar complicada en ocasiones. La lectura de archivos Excel en Java también es un poco diferente a la lectura de archivos Word en Java debido a las celdas de Excel. El JDK no proporciona una API directa para leer o escribir documentos de Microsoft Excel. En su lugar, tenemos que depender de la biblioteca de terceros Apache POI.

Biblioteca POI de Apache

POI significa “Implementación de Ofuscación Deficiente.” Apache POI es una biblioteca de Java de código abierto diseñada para leer y escribir documentos de Microsoft. Ofrece una forma de crear y manipular varios formatos de archivo basados en Microsoft Office. Usando Apache POI, uno debería ser capaz de realizar operaciones de creación, modificación y visualización/lectura en una gama de formatos de archivo de Microsoft Office.

Descargar e instalar la biblioteca POI de Apache

Para empezar, descargaremos la última versión de los JARs POI. Navega a http://poi.apache.org/download.html y descarga el archivo ZIP más reciente, que contendrá la API de Java para leer un archivo Excel en Java.

Cómo leer archivos Excel en Java, Figura 1: Descargar archivo de distribución binaria

Descargar archivos JAR de Apache POI

Cuando descargue el archivo ZIP, deberá descomprimirlo y añadir los siguientes archivos JAR al classpath de su proyecto. Esto se explica en Lectura desde un archivo Excel a continuación.

Cómo leer archivos Excel en Java, Figura 2: Archivos JAR

Añada los ficheros jar de Apache POI al classpath de Java

Nota: También copie los archivos de lib y ooxml-lib junto con los otros archivos.

Clases e interfaces en PDI

A continuación se indican las clases de archivos XLS y XLSX que pueden utilizarse:

Cómo leer archivos Excel en Java, Figura 3: Clases de POI de Apache

Clases de POI de Apache

La siguiente es una lista de diferentes interfaces y clases de Java en POI para leer archivos XLS y XLSX en Java:

La interfaz de Workbook es implementada por las clases HSSFWorkbook y XSSFWorkbook.

  • HSSFWorkbook: Esta es una representación de clase del archivo XLS.
  • XSSFWorkbook: Esta es una representación de clase del archivo XLSX.

    La interfaz Sheet es implementada por las clases HSSFSheet y XSSFSheet.

  • HSSFSheet: Esta es una clase que representa una hoja en un archivo XLS.
  • XSSFSheet: Esta es una clase que representa una hoja en un archivo XLSX.

    La interfaz Row es implementada por las clases HSSFRow y XSSFRow.

  • HSSFRow: Esta es una clase que representa una fila en la hoja de un archivo XLS.
  • XSSFRow: Esta es una clase que representa una fila en la hoja de un archivo XLSX.

    La interfaz Cell es implementada por las clases HSSFCell y XSSFCell.

  • HSSFCell: Esta es una clase que representa una celda en una fila de un archivo XLS.
  • XSSFCell: Esta es una clase que representa una celda en una fila de un archivo XLSX.

Lectura de un archivo Excel

Para nuestro ejemplo, leeremos el siguiente archivo Excel en Java:

Cómo leer archivos Excel en Java, Figura 4: El archivo Excel a leer

El archivo Excel que se leerá

Pasos para leer archivos Excel en Java

  1. Crea un proyecto Java usando cualquier IDE Java. Vamos a utilizar Netbeans para este proyecto.

  2. A continuación, crea una carpeta lib en el proyecto.

  3. A continuación, añada los archivos JAR descargados a la carpeta lib creada en el paso anterior.

  4. Establezca el Class-Path haciendo clic derecho en la carpeta del proyecto > Ruta de compilación > Añadir archivos JAR externos > seleccione todos los archivos JAR mencionados anteriormente > Aplicar y cerrar.

  5. Ahora, creemos un archivo de clase con el nombre ReadExcelFileDemo.

  6. Cree un archivo Excel con el nombre "studentdata.xls" y escriba en él los datos anteriores o cualquier otro dato.

    A continuación se muestra un ejemplo de código para leer archivos Excel en Java:

import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import org.apache.poi.hssf.usermodel.HSSFSheet;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.FormulaEvaluator;  
import org.apache.poi.ss.usermodel.Row;  

public class ReadExcelFileDemo  {  
    public static void main(String args []) throws IOException  {  
        //obtaining input bytes from a file  
        FileInputStream fis=new FileInputStream(new File("C:\\demo\\studentdata.xls"));  
        //creating workbook instance that refers to .xls file  
        HSSFWorkbook wb=new HSSFWorkbook(fis);   
        //creating a Sheet object to retrieve the object  
        HSSFSheet sheet=wb.getSheetAt(0);  
        //evaluating cell type   
        FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator();  
        for(Row row: sheet) {  
            for(Cell cell: row) {
                switch(formulaEvaluator.evaluateInCell(cell).getCellType()) {  
                    case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type  
                        //getting the value of the cell as a number  
                        System.out.print(cell.getNumericCellValue()+ "\t\t");   
                        break;  
                    case Cell.CELL_TYPE_STRING: //field that represents string cell type  
                        //getting the value of the cell as a string  
                        System.out.print(cell.getStringCellValue()+ "\t\t");  
                        break;
                }
            }
            System.out.println();  
        }
    }
}
JAVA

Salida:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

Los pasos son los mismos para la lectura de archivos xlsx, a excepción de los dos puntos principales siguientes:

  • En primer lugar, cambie el formato del archivo a .xlsx. Se puede utilizar el mismo archivo "studentdata", pero con la extensión .xlsx.
  • En segundo lugar, hay una diferencia en la forma de importar Java Apache POI. El código es el siguiente:
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.Row;  
import org.apache.poi.xssf.usermodel.XSSFSheet;  
import org.apache.poi.xssf.usermodel.XSSFWorkbook;  

public class XLSXReaderExample  {

    public static void main(String [] args) {  
        try {  
            File file = new File("C:\\demo\\studentdata.xlsx");  
            FileInputStream fis = new FileInputStream(file);  
            //creating Workbook instance that refers to .xlsx file  
            XSSFWorkbook wb = new XSSFWorkbook(fis);   
            XSSFSheet sheet = wb.getSheetAt(0); 
            Iterator<Row> itr = sheet.iterator();
            while (itr.hasNext()) {  
                Row row = itr.next();  
                Iterator<Cell> cellIterator = row.cellIterator();   //iterating over each column  
                while (cellIterator.hasNext()) {  
                    Cell cell = cellIterator.next();  
                    switch (cell.getCellType()) {  
                        case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type  
                            //getting the value of the cell as a number  
                            System.out.print(cell.getNumericCellValue() + "\t\t");   
                            break;
                        case Cell.CELL_TYPE_STRING: //field that represents string cell type  
                            //getting the value of the cell as a string  
                            System.out.print(cell.getStringCellValue() + "\t\t");  
                            break;
                    }
                }
                System.out.println("");  
            }  
        } catch(Exception e) {  
            e.printStackTrace();  
        }
    }
}
JAVA

Salida:

IdNames
1Zeeshan
2Shoaib
3Umar
4Rizwan
5Ahsan

La biblioteca IronXL C

IronXL es una biblioteca independiente de .NET que facilita la lectura y edición de documentos de Microsoft Excel con C#. No requiere que Microsoft Excel esté instalado ni depende de Interop.

Con IronXL, los desarrolladores pueden realizar todos los cálculos relacionados con Excel sin esfuerzo, simplemente escribiendo unas pocas líneas de código y con un rápido rendimiento. Esto podría ser para tareas como sumar dos celdas, calcular el total general de una columna, agregar una columna completa a una tabla de Excel, agregar una fila completa a una tabla de Excel, sumas de columna de una o varias filas, o muchas otras tareas facilitadas a través de las útiles características de IronXL.

IronXL es totalmente compatible con .NET Framework, .NET Core, Mobile, Xamarin, Azure Linux y MacOS.

Características de IronXL

  • Carga, lee y edita datos de XLS/XLSX/CSV/TSV.
  • Guardar y exportar a XLS/XLSX/CSV/TSV/JSON.
  • Objetos System.Data — trabajar con hojas de cálculo de Excel como objetos System.Data.DataSet y System.Data.DataTable.
  • Fórmulas - trabaja con fórmulas de Excel.
  • Los rangos — con la sintaxis ["A1:B10"] — son fáciles de usar.
  • Ordenar: ordena filas, columnas y rangos.
  • Estilización: estilos visuales, fuente y tamaño de fuente, patrón de fondo, borde, alineación y formatos numéricos.

    A continuación se muestra un ejemplo de código de la lectura de un archivo de Excel en C # usando IronXL:

using IronXL;
using System.Linq;

//Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

//Select cells easily in Excel notation and return the calculated value
int cellValue = sheet ["A2"].IntValue;

// Read from Ranges of cells elegantly.
foreach (var cell in sheet ["A2:A10"]) {
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
using IronXL;
using System.Linq;

//Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

//Select cells easily in Excel notation and return the calculated value
int cellValue = sheet ["A2"].IntValue;

// Read from Ranges of cells elegantly.
foreach (var cell in sheet ["A2:A10"]) {
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
Imports IronXL
Imports System.Linq

'Supported spreadsheet formats for reading include: XLSX, XLS, CSV and TSV
Private workbook As WorkBook = WorkBook.Load("test.xlsx")
Private sheet As WorkSheet = workbook.WorkSheets.First()

'Select cells easily in Excel notation and return the calculated value
Private cellValue As Integer = sheet ("A2").IntValue

' Read from Ranges of cells elegantly.
For Each cell In sheet ("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

Trabajar con IronXL facilita mucho el trabajo de los desarrolladores. Su código sencillo y fácil de usar hace que el software sea menos propenso a errores al trabajar con archivos Excel.

Descargar IronXL y utilízalo con tus proyectos hoy mismo.

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.
< ANTERIOR
Pruebe sus patrones Regex con .NET Regex Tester
SIGUIENTE >
Cómo cambiar de columna en Excel