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.

13 comentarios:

  1. Anónimo dijo...:

    Hola,

    Excelente artículo.

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

    Gracias.

  1. Luis Navarro dijo...:

    Qué tal,

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

    Saludos.

  1. Anónimo dijo...:

    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.

  1. Luis Navarro dijo...:

    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.

  1. Anónimo dijo...:

    Thx. Lo miraré.

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

    Salu2.

  1. Anónimo dijo...:

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

  1. jack M P dijo...:

    Muy buen aporte hermano..!!

  1. irving suarez dijo...:

    y como haria paara modificar uno que ya existe??

  1. Jose Antonio dijo...:

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

  1. 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

  1. 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

  1. Marta dijo...:

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

    Un saludo!

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

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.

 
Monillo007 © 2010 | Designed by Trucks, Manual Bookmarking | Elegant Themes