Ejemplo sencillo de como crear un Excel o CSV en Java con Apache POI y OpenCSV

Escrito por picodotdev el , actualizado el .
blog-stack java planeta-codigo programacion
Comentarios

Java

La librería Apache POI nos permite acceder y crear documentos del producto ofimático Microsoft Office utilizando el lenguaje de programación Java y otros del ecosistema de la JVM. Los archivos que podemos crear y leer son documentos Word, Excel y Powerpoint.

En casi todas las aplicaciones hay necesidad de exportar los datos que maneja la aplicación a algún tipo de documento, un formato muy utilizado es el PDF sobre todo si el documento está destinado a imprimirse pero que no es el más adecuado si requiere modificaciones posteriores o contiene datos numéricos con cálculos. El formato de Excel también es muy utilizado por sus posibilidades para agrupar los datos, agregar, filtrar, hacer cálculos con funciones matemáticas, financieras o de otro tipo. Aunque si es posible es mejor utilizar un formato de documento abierto para no quitarle libertad al usuario para elegir el software que prefiera, el programa ofimático Microsoft Office sigue estando muy extendido con lo que puede que no tengamos otro remedio que utilizar como formato para exportar los datos uno propietario. En este artículo comentaré como crear un documento excel sencillo usando la librería Apache POI y el lenguaje Java.

Para trabajar con archivos xls de Excel debemos usar las clases HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ofrecidas en la API de Apache PIO. Para crear el excel se crea una instancia de HSSFWorkbook, una o varias hojas que se corresponden con las instancias de HSSFSheet y en cada hoja se pueden acceder a las filas y celdas con createRow en la hoja y con createCell en la fila. Con el método setCellValue establecemos el valor de la celda, este método está sobrecargado y podemos establecer valores boolean, Calendar, Date, double, RichTextString o String. Hay otros métodos para cambiar los estilos de la celda con setCellStyle, setHyperlink para insertar un enlace o setCellFormula para crear una fórmula que realice algún cálculo con los datos de las celdas.

El siguiente ejemplo crea documento excel con varios datos, aplicando estilos a las cabeceras y una fórmula con el total de los precios de una lista de productos, al final escribe el excel en un archivo. En el archivo de construcción, en este caso de Gradle, debemos incluir la dependencia de la librería de Apache POI.

LibreOffice tiene la capacidad de abrir documentos excel, en la siguiente imagen se ve el documento abierto con LibreOffice Calc creado en el ejemplo.

Excel generado con Apache POI abierto con LibreOffice

Otro formato de datos muy utilizado es el de columnas separadas por comas o CSV. Con la librería OpenCSV se pueden escribir archivos bien formados en este formato teniendo en cuenta el caracter separador de las columnas y el entrecomillado de los datos.

En la guía de iniciación a las características de los documentos HSSF y XSSF hay ejemplos pequeños sobre varias de las funcionalidades más comunes que necesitaremos al generar documentos. Otra funcionalidad relacionada con la escritura en el formato de estos tipos de archivos es la lectura que también es posible con estas mismas librerías, Ejemplo sencillo de cómo leer datos de un archivo Excel o CSV en Java.

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando el comando ./gradlew run.