En mi último proyecto en
Grails, el cliente quería exportar a
excel muchas de las consultas que proporcionaba el programa.
Como no encontré mucha información por ahí, les cuento lo que se me ocurrió a mi.
Antes que nada, utilicé
JExcelApi para generar los archivos
excel. Recuerden que en
Grails podemos utilizar cualquier librería Java existente.
Primer paso, colocar el
jar (
jxl.
jar en nuestro caso) de la
librería en la carpeta "
lib" de nuestro proyecto.
Ya que tenía varios métodos para exportar, decidí crear un servicio en
grails que encapsulara a los mismos . Lo único que hay que hacer es agregar los
imports correspondientes a las clases que utilicemos para nuestro
excel.
import jxl.*;
import jxl.write.*;
Lo que nos queda es implementar nuestros métodos usando
JExcelApi (ejemplos en otra ocasión) y llamar al servicio desde nuestro controlador.
Para agregar el servicio a nuestro controlador sólo debemos definir una variable del mismo nombre y será "inyectada" automáticamente a través de
Spring. En mi caso el servicio se llamaba
Report, entonces
def reportService
Hay que tener en cuenta que a los métodos de reportes les pasé como parámetro el
response, así escribimos en el mismo y al cliente le aparecerá el diálogo para bajar un archivo
XLS.
en el controlador:
response.setHeader("Content-disposition",
"attachment; filename=Clientes.xls")
response.contentType = "application/vnd.ms-excel"
//"clientes" es una lista de objetos del dominio
reportService.exportClientes(response.outputStream, clientes)
en el reporte:
def workbook = Workbook.createWorkbook(outputStream);
Y eso es todo. Tal vez más adelante ponga
algún ejemplo de como utilizar
JXL, pero es trivial.