Trabajo con Excel en Java: resumen de bibliotecas y ejemplos de código
Java es uno de los lenguajes más populares para el desarrollo empresarial, donde a menudo surge la necesidad de interactuar con hojas de cálculo de Microsoft Excel (formatos .xls y .xlsx). Ya sea para exportar informes, importar datos desde un CRM o automatizar informes contables, no se puede prescindir de una herramienta confiable para trabajar con Excel. En este artículo, revisaremos las principales bibliotecas para Java, sus capacidades, ventajas y desventajas, y proporcionaremos ejemplos prácticos de código.
Bibliotecas populares para trabajar con Excel en Java
Hoy en día, existen varias soluciones maduras. La elección de una biblioteca específica depende de la versión de Excel, el volumen de datos y la funcionalidad requerida.
- Apache POI — el estándar de facto. Soporta ambos formatos (
.xlsy.xlsx), permite leer, escribir, formatear celdas, trabajar con fórmulas, gráficos y macros. Es pesada, pero la biblioteca más potente. - JExcelApi (jxl) — una alternativa más ligera, pero solo soporta el formato antiguo
.xls. Adecuada para tareas simples donde no se necesita soporte para.xlsx. - EasyExcel (Alibaba) — una versión ligera basada en POI, optimizada para trabajar con archivos grandes y procesamiento por flujo. Ideal para importar/exportar millones de filas.
- OpenCSV — no es directamente para Excel, sino para trabajar con CSV (que Excel abre). Es ideal para el intercambio simple de datos tabulares sin formato.
Ejemplo 1: Lectura de un archivo Excel con Apache POI
Consideremos un escenario básico: abrir el archivo data.xlsx y mostrar el contenido de la primera hoja en la consola.
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.IOException;
public class ReadExcelExample { public static void main(String[] args) { String filePath = "data.xlsx";
try (FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0); // primera hoja
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; default: System.out.print("?\\t"); } } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }}Ejemplo 2: Escritura de datos en Excel con formato
Crearemos un nuevo archivo report.xlsx con encabezados y datos, resaltando los encabezados en negrita.
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;
public class WriteExcelExample { public static void main(String[] args) { try (Workbook workbook = new XSSFWorkbook()) { Sheet sheet = workbook.createSheet("Informe");
// Estilo para los encabezados CellStyle headerStyle = workbook.createCellStyle(); Font headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setFontHeight También en la biblioteca
Compression en JavaScript (Node.js): guía completa con ejemplos
Cliente HTTP para Java: revisión de las mejores bibliotecas (Java 11, Apache, OkHttp, Retrofit)
Parseo de HTML en PHP: DOMDocument, SimpleXML y cURL para web scraping
Trabajo con Excel en Rust: bibliotecas para lectura y escritura