2. ¿Quién soy?
Iván López Martín @ilopmar
Usando Grails/Groovy desde hace más de 2 años
Creador de www.bokzuy.com
Geek, Padre, Desarrollador, Linuxero, Pro-Software libre
Trabajo en Kaleidos
http://lopezivan.blogspot.com
3. Plugin Exporter
http://grails.org/plugin/export
Permite exportar datos desde una aplicación grails a los
formatos: CSV, Excel, ODS, RTF, PDF y XML
Sencillo de utilizar y muy flexible
Distintas opciones en función del formato de salida elegido
Proporciona un servicio exportService que se encarga de la
generación del archivo final
4. Parámetros
El servicio de exportación recibe:
• Output stream
• Lista de objetos a exportar
• Campos
• Etiquetas
• Formatters
• Parámetros
6. Ejemplo
class User {
String name
Date birthDate
Company company
}
List fields = ["name", "company.name", "birthDate"]
7. Ejemplo
class User {
String name
Date birthDate
Company company
}
List fields = ["name", "company.name", "birthDate"]
Map labels = ["name":"Nombre de usuario",
"company.name":"Compañía", "birthDate":"Fecha de
nacimiento"]
8. Ejemplo
class User {
String name
Date birthDate
Company company
}
List fields = ["name", "company.name", "birthDate"]
Map labels = ["name":"Nombre de usuario",
"company.name":"Compañía", "birthDate":"Fecha de
nacimiento"]
Map formatters = [birthDate:dateToString]
def dateToString = { domain, value >
return Utils.stringDate(value)
}
9. Ejemplo
class User {
String name
Date birthDate
Company company
}
List fields = ["name", "company.name", "birthDate"]
Map labels = ["name":"Nombre de usuario",
"company.name":"Compañía", "birthDate":"Fecha de
nacimiento"]
Map formatters = [birthDate:stringDate]
Map parameters = ["encoding":"UTF8"]
httpResponse.contentType =
"application/vnd.oasis.opendocument.spreadsheet"
httpResponse.setHeader("Contentdisposition", "attachment;
filename=usuarios.ods")
10. Ejemplo
class User {
String name
Date birthDate
Company company
}
List fields = ["name", "company.name", "birthDate"]
Map labels = ["name":"Nombre de usuario",
"company.name":"Compañía", "birthDate":"Fecha de
nacimiento"]
Map formatters = [birthDate:stringDate]
Map parameters = ["encoding":"UTF8"]
httpResponse.contentType =
"application/vnd.oasis.opendocument.spreadsheet"
httpResponse.setHeader("Contentdisposition", "attachment;
filename=usuarios.ods")
def objects = User.list()
exportService.export('ods', httpResponse.outputStream,
objects, fields, labels, formatters, parameters)
11. Pero no termina ahí
Se puede utilizar para exportar datos generados y calculados
que no están persistidos con una clase de dominio
La lista “objects” tendrá mapas con las propiedades que se
desean exportar
De esta forma conseguimos generar informes adhoc para el
usuario