Jxls: Una forma sencilla de generar un Excel

Muchas veces nos topamos con el problema de tener que generar un archivo Excel a partir de ciertos datos que tenga un determinado formato y que pueda mostrarlos en función de una cierta condición. Existen librerías que cubren esta funcionalidad pero que presentan cierta complejidad o que requieren de cierto tiempo de aprendizaje. Teniendo en cuenta todas estas problemáticas es que nace JXLS.

¿Que es?

JXLS es una librería open-source que por medio de un template, el cual tiene que tiene que tener extensión .xls  o .xlsx, nos permite generar un nuevo documento Excel con todos los datos ya cargados. Ademas esta librería tiene funcionalidades para poder generar gráficos una vez que todos los datos fueron cargados y antes de que termine de generar el documento.

Esta librería se diferencia de otras como ser el caso de Apache POI la cual nos permite realizar un sin numero tareas con lo que son documentos como Excel y Word. La gran desventaja por así decirlo que tiene este tipo de librerías es que en el caso de querer generar algo con un cierto formato y con una estética en particular nos implica mucho tiempo ademas de la gran cantidad de código que eso conlleva, ya que uno debe darle el formato a cada una de las celdas que se van a crear.

¿Que ventajas tiene?

Ademas de la ventaja mencionada en el párrafo anterior se encuentran las siguientes:

  • Una forma simple de acceder a las propiedades de los objetos.
  • Uso flujos de control (for/if)
  • Generación de gráficos
  • Usar el mismo juego de datos en distintas hojas
  • Uso de formulas
  • Soporta el uso de celdas combinadas

¿Como la agrego a mi proyecto?

Para poder usarla dentro de nuestro proyecto primero deberemos tenerla referenciada dentro de nuestro classpath para ello hay varias alternativas:

  1. Descargar la librería manualmente desde aqui
  2. Referenciarla desde Maven o Gradle

A los fines de este post mostraremos como usarla por medio de Maven por lo cual deberemos agregar dentro de nuestro archivo POM lo siguiente:

Debe tenerse en cuenta que la versión de la librería que actualmente esta vigente puede ser superior a la mencionada en este post por lo cual se debería chequear aqui 

¿Como la uso?

Con el fin de poder ver el uso de esta libreria de manera mas practica mostraremos el siguiente ejemplo:

  • Definimos nuestros objetos de dominio, que en este caso serian una Factura y el detalle de la misma

  • Luego generamos una clase que se encargara de generar los datos e invocar al método de la clase que se encarga de generarnos el nuevo documento

  • Por ultimo definimos nuestro template que usaremos en este ejemplo. El mismo lo puedo descargar de aqui.

template

  • Por ultimo lo unico que nos queda es ejecutar la clase GenerarExcel que se encargara de generar el documento. Luego de que se ejecuto la clase nos deberia arrojar un excel similar al que se encuentra aqui abajo.templateOutput

Ahora pasamos a detallar los tags que son utilizados dentro del template:

  • Acceder a los atributos: Dentro del template podremos acceder a las propiedades por medio de ${clave.propiedad}, donde “clave” es el nombre que hemos colocado dentro del Map (“factura” en el caso del ejemplo) y propiedad son los distintos atributos de la clase (idCliente, numCliente para el caso de este ejemplo).
  • Iterar colecciones: Una funcionalidad interesante de JXLS es que podemos iterar las colecciones (<:jxforEach items=”${clave.propiedad}” var=”nombreVariableTemporal”>). Al igual que en el punto anterior la forma de acceder a los atriburos es la misma pero deberemos colocarle un nombre a una variable podra ser usada solo dentro de las celdas que esten comprendidas dentro del ciclo for.
  • Condicionales: Para poder colocar condicionales deberemos colocar algo parecido a <jx:if test=”${clave.propiedad  condicion}”>, donde la condición tiene que ser algo que al ser evaluada sea verdadero o falso. Al igual que en los puntos anteriores la forma de acceder a los atributos es la misma.
  • Formulas: Podemos utilizar formulas siempre y cuando esten encerradas dentro de $[formula]. La idea de esto es que sea dinámico y que las formulas se ejecuten una vez que se cargan todos los datos.

Aqui se encuentra el código de este ejemplo para que sea mas facil poder modificar y probar otras variantes.

Conclusión

Como se ha visto a lo largo de este post JXLS nos presenta una gran facilidad para poder generar nuestras plantillas de calculo sin tener que colocar gran cantidad de codigo dentro de nuestra aplicación, esto puede verse mas claramente ya que una persona con poco conocimiento del mundo de la programación pueda generarnos el template tal cual es necesario (formato de los números, colores de las celdas entre otras cosas) y nosotros solo dedicarnos a agregar el código que complete ese template.

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *