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.*;Lo que nos queda es implementar nuestros métodos usando JExcelApi (ejemplos en otra ocasión) y llamar al servicio desde nuestro controlador.
import jxl.write.*;
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 reportServiceHay 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.