Apache POI Java: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

1. ¿Qué es Apache POI y para qué sirve?

Apache POI (Poor Obfuscation Implementation) es una potente librería de código abierto para Java, diseñada para crear, leer y modificar archivos de Microsoft Office (Excel, Word, PowerPoint, Outlook). Permite a los desarrolladores gestionar documentos de forma programática sin necesidad de tener instalado Microsoft Office. La librería ofrece dos APIs principales: HSSF (Horrible Spreadsheet Format) para trabajar con archivos .xls (Excel 97-2003) y XSSF (XML Spreadsheet Format) para el formato moderno .xlsx (Excel 2007+). Para archivos de Word, se utilizan componentes similares: HWPF (para .doc) y XWPF (para .docx).

¿Para qué sirve? En el desarrollo actual, a menudo es necesario automatizar tareas con documentos de oficina: generar informes, importar datos de tablas, crear plantillas de contratos o elaborar resúmenes analíticos complejos. Apache POI resuelve estos desafíos brindando a los desarrolladores Java control total sobre la estructura del documento: desde el formato de celdas y la creación de gráficos en Excel hasta el manejo de tablas, imágenes y estilos en Word.

La librería cuenta con el respaldo activo de la comunidad Apache Software Foundation, tiene una documentación extensa y se utiliza en grandes proyectos empresariales. Es compatible con Java 8 y versiones superiores, lo que la convierte en una herramienta versátil para la mayoría de las aplicaciones Java modernas, incluyendo servicios web, aplicaciones de escritorio y sistemas de procesamiento de datos.

2. Instalación

Apache POI se distribuye a través de Maven Central Repository. Para agregarlo a tu proyecto, debes incluir las dependencias en el archivo pom.xml (para Maven) o build.gradle (para Gradle).

Maven

<!-- Dependencia principal para trabajar con Excel (.xls y .xlsx) -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.3.0</version>
</dependency>

<!-- Para trabajar con documentos de Word (.doc y .docx) -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>5.3.0</version>
</dependency>

Gradle

implementation 'org.apache.poi:poi-ooxml:5.3.0'
implementation 'org.apache.poi:poi-scratchpad:5.3.0'

Importante: La versión 5.3.0 es la actual al momento de escribir este artículo. Se recomienda verificar la última versión en Maven Repository. Ten en cuenta que poi-ooxml ya incluye poi (módulo base) y poi-ooxml-lite (para trabajar con formatos OOXML).

3. Inicio rápido: ejemplo mínimo funcional

Vamos a crear un archivo Excel simple con una fila de datos y guardarlo en el disco.

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class InicioRapido {
    public static void main(String[] args) {
        // Creamos un nuevo libro de trabajo (Workbook) para formato .xlsx
        try (Workbook workbook = new XSSFWorkbook()) {
            // Creamos una hoja con el nombre "Datos"
            Sheet sheet = workbook.createSheet("Datos");

            // Creamos una fila (índice 0 — primera fila)
            Row row = sheet.createRow(0);

            // Creamos una celda en la columna A (índice 0)
            Cell cell = row.createCell(0);
            cell.setCellValue("¡Hola, Apache POI!");

            // Creamos una celda en la columna B (índice 1) con un valor numérico
            Cell cell2 = row.createCell(1);                    

Recommendations