Trabajo con Excel en Java: Resumen de bibliotecas y ejemplos de código
A pesar de que PythonLib está dedicado a Python, Java sigue siendo uno de los lenguajes más demandados en el desarrollo corporativo, donde trabajar con hojas de cálculo de Excel es una tarea cotidiana. En este artículo revisaremos las principales bibliotecas para trabajar con Excel en Java, sus capacidades y proporcionaremos ejemplos prácticos de código.
¿Por qué se necesitan bibliotecas para Excel en Java?
Java no tiene herramientas integradas para leer y escribir archivos de Excel. Para ello se utilizan bibliotecas de terceros que permiten:
- Crear nuevos libros de Excel (formatos XLS y XLSX).
- Leer y editar archivos existentes.
- Formatear celdas, combinarlas y aplicar estilos.
- Trabajar con fórmulas, gráficos y macros.
- Exportar datos desde bases de datos u otras fuentes.
Bibliotecas principales
1. Apache POI
Apache POI es la biblioteca más popular y potente para trabajar con archivos de Microsoft Office en Java. Soporta tanto el formato antiguo XLS (HSSF) como el nuevo XLSX (XSSF).
Ventajas:
- Soporte completo de todas las funcionalidades de Excel: fórmulas, estilos, formato condicional, gráficos.
- Comunidad activa y actualizaciones regulares.
- Soporte tanto para lectura como para escritura.
Desventajas:
- Alto consumo de memoria al trabajar con archivos grandes.
- API compleja para principiantes.
2. EasyExcel (Alibaba)
EasyExcel es una biblioteca ligera de Alibaba, creada para trabajar con archivos XLSX grandes. Utiliza procesamiento por flujo, lo que reduce significativamente el consumo de memoria.
Ventajas:
- Consumo mínimo de memoria (hasta 100 veces menos que POI).
- API simple e intuitiva.
- Soporte de anotaciones para el mapeo de datos.
Desventajas:
- No soporta el formato antiguo XLS.
- Soporte limitado de formato.
3. JExcelApi (jxl)
Biblioteca antigua que solo soporta el formato XLS. Adecuada para tareas simples, pero no se ha actualizado durante mucho tiempo y no funciona con XLSX.
Ejemplos de código
Ejemplo 1: Lectura de un archivo Excel con Apache POI
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;
public class ReadExcel { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("data.xlsx"); Workbook workbook = new XSSFWorkbook(fis)) { Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { switch (cell.getCellType()) { case STRING: System.out.print(cell.getStringCellValue() + "\\t"); break; case NUMERIC: System.out.print(cell.getNumericCellValue() + "\\t"); break; case BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\\t"); break; } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }}Ejemplo 2: Escritura de datos en Excel con Apache POI
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;
public class WriteExcel { public static void main(String[] args) { try (Workbook workbook = new XSSFWor