Archivo de Excel creado con Java y un ArrayList (Datos dinámicos)

Escribir archivo de Excel con Java

En el tutorial de hoy veremos cómo crear un archivo de Excel (xlsx) con Java, usando la librería Apache POI que es la más antigua pero a su vez la más estable.

Yo usaré maven como gestor de dependencias y NetBeans como IDE, pero recuerda que al final estarás programando en Java así que puedes usar las herramientas de tu preferencia.

Importando librerías para escribir xlsx

Para escribir en un archivo de Excel con Java primero debemos agregar las dependencias a nuestro proyecto. Para ello agregamos las siguientes al apartado de dependencias en nuestro pom.xml:

Fíjate que estoy usando las mismas versiones de poi-ooxml y poi. Lo hago así porque en caso contrario se generaban algunos errores.

Recuerda que puedes ver las últimas versiones de las librerías en https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml y https://mvnrepository.com/artifact/org.apache.poi/poi

Solo como referencia, así se ve todo mi pom.xml:

Crear libro de Excel con Java

Vayamos al código. Esto lo puedes usar en cualquier lugar ya que al final es Java; yo lo he hecho simplemente en una aplicación de consola.

Comenzamos importando lo necesario:

Necesitamos File y esas cosas para escribir nuestro archivo o Workbook en el disco duro.

Luego estamos importando cosas de la librería como Cell (para celdas), Row (para filas), Sheet (hojas), etcétera.

Ahora veamos el siguiente código que realmente crea un libro de trabajo y luego lo escribe:

Creamos un libro en la línea 1, y creamos una hoja en la línea 3. Luego trabajamos todas las celdas y filas sobre esa hoja, si tú quieres puedes crear más hojas e ir agregando filas y celdas a la misma.

Fíjate en que una hoja tiene varias filas y que debes obtener referencia a cada una de ellas a través de su índice para crear celdas.

En la línea 6 estoy escribiendo realmente dentro de la celda, y después en la línea 13 escribimos el archivo en el directorio actual con el nombre definido en la 2.

Libro de Excel creado con Java

En el directorio donde el código se ejecuta ahora estará un archivo XLSX que creamos fácilmente con Java. En mi caso se ve así:

Libro de Excel creado con Java y Apache POI
Libro de Excel creado con Java y Apache POI

Fíjate en que se está respetando el nombre del archivo y de la hoja, además del contenido.

Código completo

Veamos todo el código que necesitamos para crear este archivo de Excel con Java:

Nota: recuerda que tú puedes manejar las excepciones en la manera que creas conveniente.

Bonus: escribir datos dinámicos en archivo de Excel

Te voy a mostrar cómo crear un xlsx con Java pero usando datos de un ArrayList, de este modo verás que es fácil escribir datos de manera dinámica traídos desde una base de datos o de cualquier otro lugar.

Lo he colocado en un método estático para separar el concepto pero tener ambas cosas en un mismo archivo. Definimos la clase del ArrayList:

Y luego tenemos el método que escribe, dinámicamente, un archivo de Excel con Java:

El resultado es el siguiente:

Archivo de Excel creado con Java y un ArrayList (Datos dinámicos)
Archivo de Excel creado con Java y un ArrayList (Datos dinámicos)

Poniendo todo junto

Ya para terminar te dejo el código completo:

Espero que a partir de estos ejemplos puedas lograr lo que necesitas, ya sea guardar los datos de una base de datos, de cosas solicitadas al usuario o cualquier otra cosa.

Por aquí te dejo el proyecto en GitHub y en este enlace puedes leer más tutoriales de Java.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Escribir archivo de Excel con Java”

  1. Hola! Quiero hacer para hacer un link que dirija a un xls descargable. Al hacer una búsqueda, me muestra en 1 tabla las filas encontradas (variable) y quiero poner 1 xls que almacene en cada fila del xls, una linea de la tabla!
    muchas gracias!

Dejar un comentario