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);