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:
- Clic en Archivo -> Nuevo Proyecto
- Selecciona de la lista "Aplicación Java" y posteriormente da clic en "Siguiente"
- 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.
Hola,
ResponderBorrarExcelente artículo.
¿Cuál es la contraseña para abrir el zip con el código de ejemplo?
Gracias.
Qué tal,
ResponderBorrarLa contraseña es http://monillo007.blogspot.com
Saludos.
OK, genial...
ResponderBorrarSeguí 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.
Qué tal,
ResponderBorrarLa 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.
Thx. Lo miraré.
ResponderBorrarSi pusieras un ejemplo sencillo de como se usa nos seria de mucha utilidad.
Salu2.
Gracias por el aporte, me servirá para un proyecto que estoy por comenzar!!
ResponderBorrarMuy buen aporte hermano..!!
ResponderBorrary como haria paara modificar uno que ya existe??
ResponderBorrarSe podria escribir mas de 1 millon de registros con esta libreria?
ResponderBorrarFunciona perfectamente.. solo que tengo este incoveniente.. estoy trabajando cliente-servidor..
ResponderBorrarcomo tengo que hacer para que el excel se guarde en el cliente y no en el servidor
Funciona perfectamente.. solo que tengo este incoveniente.. estoy trabajando cliente-servidor..
ResponderBorrarcomo tengo que hacer para que el excel se guarde en el cliente y no en el servidor
Buenas,
ResponderBorrarbuen post, pero tengo una pregunta. ¿Hay alguna forma de añadir comentarios a las celdas de la excel?
Un saludo!
Muchas Gracias me funciono de maravilla, justo lo que necesitaba.Sigue asi :rock:
ResponderBorrarQué decirte!!, GENIAL!! con las 3 'C' de Calidad, que son: Claro, Conciso y Concreto.
ResponderBorrarMuchas gracias.
buen aporte
ResponderBorrarMuy buen aporte!!
ResponderBorrarHola, 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.
ResponderBorrarExcelente aporte, muchas gracias, una consulta puedo ajustar el tamaño de cada columna
ResponderBorrarsaludos