Ir al contenido principal

3 sencillos pasos para generar archivos de Excel (xls) con Java

HojaExcel

Existen diversas razones por las cuales en algún momento es necesario crear archivos de Excel desde Java. Los métodos para hacerlo son igualmente diversos, sin embargo, para aquellas ocasiones en las que quieres hacer algo simple y rápido aquí están 3 sencillos pasos que puedes seguir para lograrlo.

Paso 1. Descargar las librerías Apache POI

Cuando vamos a trabajar con archivos de Microsoft Office desde Java generalmente vamos a hablar de las librerías Apache POI, así que el primer paso es hacernos de estas librerías descargándolas desde su sitio oficial dando clic en el siguiente vínculo:

    * Descargar librerías Apache POI

Si lo deseas puedes esperar ya que al final del artículo encontrarás una liga de descarga del código que aquí generamos (incluyendo los archivos jar necesarios para ejecutarlo).

Paso 2. Creación del proyecto

Utilizaremos NetBeans como interfaz de desarrollo y crear el proyecto de la siguiente manera:

  1. Clic en Archivo -> Nuevo Proyecto
  2. Selecciona de la lista "Aplicación Java" y posteriormente da clic en "Siguiente"
  3. Escribe el nombre del proyecto, en mi caso HowToExcel y da clic en "Finalizar"

Tras realizar estos pasos se abrirá la clase principal de la aplicación, en esta clase escribiremos todo el código necesario.

Paso 3. Codificar

Puede parecer el paso más largo pero si lo analizamos no necesitaremos más de 20 líneas de código para generar los archivos xls, a continuación el detalle.

Primeramente definimos un objeto de tipo String para almacenar la ruta del archivo que vamos a crear de la siguiente manera:


String rutaArchivo = System.getProperty("user.home")+"/ejemploExcelJava.xls";

Con System.getProperty("user.home") obtenemos el directorio de trabajo del usuario actual, dentro del mismo crearemos el archivo de nombre "ejemploExcelJava.xls".

Una vez hecho esto creamos un objeto de tipo File para que contenga el archivo...


File archivoXLS = new File(rutaArchivo);

...verificamos si existe dentro del sistema y de ser así lo eliminamos para crear una nueva copia de trabajo...


if(archivoXLS.exists()) archivoXLS.delete();

archivoXLS.createNewFile();

Ya con el archivo físico creado y disponible comenzamos con el trabajo específico de Excel, para ello creamos el libro con el objeto Workbook:


Workbook libro = new HSSFWorkbook();

Posteriormente inicializamos el flujo de datos con el archivo que creamos previamente...


FileOutputStream archivo = new FileOutputStream(archivoXLS);

...y creamos la hoja dentro del libro dándole el nombre de "Mi hoja de trabajo 1"...


Sheet hoja = libro.createSheet("Mi hoja de trabajo 1");

Tras realizar estos pasos tenemos el archivo físico, el libro de excel y una hoja dentro del mismo libro. Ahora es necesario escribir los datos en las celdas para lo cual haremos un par de ciclos anidados, uno para las filas y el otro para las celdas.

En este ejemplo escribiremos 10 filas de datos con 5 celdas cada una, la primera fila será la de los encabezados.

Inicializamos entonces un ciclo que haga 10 iteraciones...


for(int f=0;f<10;f++){
.
.
.
}

Dentro del mismo creamos la primera fila con el objeto Row...


Row fila = hoja.createRow(f);

Ya con la fila creada comenzaremos a agregar las celdas, 5 por cada fila...


for(int c=0;c<5;c++){
   Cell celda = fila.createCell(c);
   .
   .
}

Posteriormente validamos si la fila es la fila 0 entonces corresponde al encabezado, de lo contrario escribimos los datos necesarios...


if(f==0){
    celda.setCellValue("Encabezado #"+c);
}else{
    celda.setCellValue("Valor celda "+c+","+f);
}

Al finalizar ambos ciclos escribimos el archivo...


libro.write(archivo);

...y cerramos el flujo de datos...


archivo.close();}

Por último utilizamos la clase Desktop para visualizar el archivo con Excel...


Desktop.getDesktop().open(archivoXLS);

Y listo! Hemos terminado. Puedes descargar el proyecto completo desde el siguiente enlace:



Descargar
Contraseña para descomprimir: http://monillo007.blogspot.com


Si tienes dudas, preguntas o comentarios te invito a utilizar el formulario de la parte inferior del artículo para hacérmelo saber.

Si quieres conocer más acerca de Java no dudes en darte una vuelta por este enlace y si te gustó el artículo te invito a que lo compartas desde los botones sociales (Twitter, Facebook, Google+) y a y suscribirte al blog si aún no lo has hecho.

Comentarios

  1. Hola,

    Excelente artículo.

    ¿Cuál es la contraseña para abrir el zip con el código de ejemplo?

    Gracias.

    ResponderBorrar
  2. Qué tal,

    La contraseña es http://monillo007.blogspot.com

    Saludos.

    ResponderBorrar
  3. OK, genial...

    Seguí todos los pasos de este artículo y me funcionó perfectamente.

    Una cosa: ¿se puede generar un word y un pdf con el paquete POI? Me interesaría hacer unos reportes de java en formato pdf (imprimir unas jTables). ¿Cómo puedo hacerlo?

    Gracias de nuevo.

    ResponderBorrar
  4. Qué tal,

    La librería POI te sirve para Word y Excel, en el caso de PDF se utiliza iText o incluso puedes generarlos mucho más sencillo y con menos código implementando reportes con iReport.

    Saludos.

    ResponderBorrar
  5. Thx. Lo miraré.

    Si pusieras un ejemplo sencillo de como se usa nos seria de mucha utilidad.

    Salu2.

    ResponderBorrar
  6. Gracias por el aporte, me servirá para un proyecto que estoy por comenzar!!

    ResponderBorrar
  7. y como haria paara modificar uno que ya existe??

    ResponderBorrar
  8. Se podria escribir mas de 1 millon de registros con esta libreria?

    ResponderBorrar
  9. Funciona perfectamente.. solo que tengo este incoveniente.. estoy trabajando cliente-servidor..

    como tengo que hacer para que el excel se guarde en el cliente y no en el servidor

    ResponderBorrar
  10. Funciona perfectamente.. solo que tengo este incoveniente.. estoy trabajando cliente-servidor..

    como tengo que hacer para que el excel se guarde en el cliente y no en el servidor

    ResponderBorrar
  11. Buenas,
    buen post, pero tengo una pregunta. ¿Hay alguna forma de añadir comentarios a las celdas de la excel?

    Un saludo!

    ResponderBorrar
  12. Muchas Gracias me funciono de maravilla, justo lo que necesitaba.Sigue asi :rock:

    ResponderBorrar
  13. Qué decirte!!, GENIAL!! con las 3 'C' de Calidad, que son: Claro, Conciso y Concreto.

    Muchas gracias.

    ResponderBorrar
  14. Hola, muchas gracias por tu ayuda con el código... tengo unas dudas, no se si podrías ayudarme por favor, si puedes me escribes a vivi.mary.a.a@gmail.com.

    ResponderBorrar
  15. Excelente aporte, muchas gracias, una consulta puedo ajustar el tamaño de cada columna
    saludos

    ResponderBorrar

Publicar un comentario

Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:

1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.

2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario.

3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.

4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa.

5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente.

Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.

Entradas más populares de este blog

3 sencillos pasos para tramitar la ayuda por desempleo de la AFORE

¿Tienes dinero ahorrado en tu AFORE y en este momento no estás trabajando o estás trabajando pero no tienes seguro social? Si respondiste sí a la pregunta anterior entonces hay una buena noticia para ti: puedes retirar una parte del dinero que tienes ahorrado. Y lo mejor, es muy sencillo. En este artículo te diré paso a paso qué hacer para obtener ese dinero, sin tecnicismos legales ni nada por el estilo, simple y sencillamente lo que necesitas saber. Paso Número 1: Obtener los últimos 2 estados de cuenta de tu Afore Esto en la mayoría de los casos es sumamente sencillo ya que dichos estados de cuenta llegan directamente al domicilio del ahorrador, si este es tu caso puedes saltar lo restante en este punto y continuar con el paso número 2, en caso contrario sigue leyendo… Si no tienes tus estados de cuenta debes ponerte en contacto con la empresa encargada de administrar tu ahorro para que te los proporcione, normalmente te van a pedir una identificación oficial, comprobante de

Conectar una base de datos en MySQL con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans. Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

4 extraordinarias aplicaciones espía para Android

Le andas haciendo al James Bond y necesitas grabar video, voz o tomar fotos desde tu dispositivo Android sin ser notado? Aquí 4 excelentes aplicaciones que facilitarán tus hazañas de 007 en menos de lo que canta un gallo.

c606 c6nf5g4r6 e3 tec3ad6 [Como configurar el teclado]

¿Problemas al escribir con el teclado? ¿Tratas de escribir la letra ‘o’ y sale el número ‘6’ o algo por el estilo? La solución puede ser más simple de lo que parece. La solución a tu problema tras el salto...

Conexión, consulta y ejecución de sentencias en MySQL con Java

Anteriormente escribí este mismo artículo pero para bases de datos en Oracle . En este artículo prácticamente me copio y pego para explicar paso a paso cómo realizar la conexión a MySQL en Java, así como la forma de realizar consultas a los registros existentes y ejecutar sentencias de inserción, borrado y actualización de datos. Al final del artículo tendremos una clase que encapsulará todos los procedimientos necesarios para trabajar con la base de datos.