SlideShare a Scribd company logo
1 of 15
Download to read offline
Plugins de Grails: Exporter
Iván López Martín
¿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
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
Parámetros

  El servicio de exportación recibe:

     • Output stream

     • Lista de objetos a exportar

     • Campos

     • Etiquetas

     • Formatters

     • Parámetros
Ejemplo
  class User {
      String name
      Date birthDate
      Company company
  }
Ejemplo
  class User {
      String name
      Date birthDate
      Company company
  }

  List fields = ["name", "company.name", "birthDate"]
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"]
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)
  }
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":"UTF­8"]
  httpResponse.contentType = 
  "application/vnd.oasis.opendocument.spreadsheet"
  httpResponse.setHeader("Content­disposition", "attachment; 
  filename=usuarios.ods")
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":"UTF­8"]
  httpResponse.contentType = 
  "application/vnd.oasis.opendocument.spreadsheet"
  httpResponse.setHeader("Content­disposition", "attachment; 
  filename=usuarios.ods")

  def objects = User.list()

  exportService.export('ods', httpResponse.outputStream, 
  objects, fields, labels, formatters, parameters)
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
Ejemplo
def rnd = new Random()

def list = []
10.times {
    def map = [:]
    map.p1 = UUID.randomUUID().toString().replaceAll('­', '')
    map.p2 = rnd.nextInt(10)
    map.p3 = new Date() + rnd.nextInt(50) + 10
    
    list << map
}
Ejemplo
def rnd = new Random()

def list = []
10.times {
    def map = [:]
    map.p1 = UUID.randomUUID().toString().replaceAll('­', '')
    map.p2 = rnd.nextInt(10)
    map.p3 = new Date() + rnd.nextInt(50) + 10
    
    list << map
}

println list

­­­­
[[p1:3475045bb4794778a441238f8b1b700c, p2:3, p3:Tue Jul 31 
16:03:07 CEST 2012], [p1:cc2af0e290774667bd7b71e3ac8d8c6f, 
p2:4, p3:Sun Aug 19 16:03:07 CEST 2012], 
[p1:91e81467dd9146e5ac32e19e739d8515, p2:1, p3:Mon Jul 16 
16:03:07 CEST 2012], ...]
Ejemplo
List fields = ["p2", "p1"]
Map labels = [p2:"Prop. 2"C, p1:"Prop. 1"]

Map parameters = ["encoding":"UTF­8"]
httpResponse.contentType = "application/vnd.ms­excel"
httpResponse.setHeader("Content­disposition", "attachment; 
filename=listado.xls")

exportService.export('excel', httpResponse.outputStream, 
list, fields, labels, [:], parameters)
¿Preguntas?




              ¿?

More Related Content

Similar to Madrid GUG - Grails Plugins: Exporter

Frames y formularios en html
Frames y formularios en htmlFrames y formularios en html
Frames y formularios en html
bhylenia
 
Formularios html
Formularios htmlFormularios html
Formularios html
BB
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Didier Granados
 
114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query
114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query
114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query
GeneXus
 
Formularios (Photoshop)
Formularios (Photoshop)Formularios (Photoshop)
Formularios (Photoshop)
Cat Lunac
 

Similar to Madrid GUG - Grails Plugins: Exporter (20)

1
11
1
 
Formularios y Validaciones
Formularios y ValidacionesFormularios y Validaciones
Formularios y Validaciones
 
Frames y formularios en html
Frames y formularios en htmlFrames y formularios en html
Frames y formularios en html
 
Formularios HTML
Formularios HTMLFormularios HTML
Formularios HTML
 
Formularios HTML
Formularios HTMLFormularios HTML
Formularios HTML
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 
Formularios html
Formularios htmlFormularios html
Formularios html
 
Clase 11 formularios
Clase 11 formulariosClase 11 formularios
Clase 11 formularios
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
APIs de medios sociales
APIs de medios socialesAPIs de medios sociales
APIs de medios sociales
 
Introducción a Javascript: Formularios
Introducción a Javascript: FormulariosIntroducción a Javascript: Formularios
Introducción a Javascript: Formularios
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query
114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query
114 Enriqueciendo Aplicaciones Genexus Con El Objeto Query
 
Programacion C
Programacion CProgramacion C
Programacion C
 
Guía Formulario
Guía FormularioGuía Formulario
Guía Formulario
 
Formulario
FormularioFormulario
Formulario
 
Formularios html5
Formularios html5Formularios html5
Formularios html5
 
Investigacion 1
Investigacion 1Investigacion 1
Investigacion 1
 
Formularios (Photoshop)
Formularios (Photoshop)Formularios (Photoshop)
Formularios (Photoshop)
 

More from Iván López Martín

More from Iván López Martín (20)

SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Voxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdf
Voxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdfVoxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdf
Voxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdf
 
VMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring BootVMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring Boot
 
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewaySpring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
 
Codemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring BootCodemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring Boot
 
CommitConf 2023 - Spring Framework 6 y Spring Boot 3
CommitConf 2023 - Spring Framework 6 y Spring Boot 3CommitConf 2023 - Spring Framework 6 y Spring Boot 3
CommitConf 2023 - Spring Framework 6 y Spring Boot 3
 
Construyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVMConstruyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVM
 
jLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoTjLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoT
 
Codemotion Madrid 2020 - Serverless con Micronaut
Codemotion Madrid 2020 - Serverless con MicronautCodemotion Madrid 2020 - Serverless con Micronaut
Codemotion Madrid 2020 - Serverless con Micronaut
 
JConf Perú 2020 - ¡Micronaut en acción!
JConf Perú 2020 - ¡Micronaut en acción!JConf Perú 2020 - ¡Micronaut en acción!
JConf Perú 2020 - ¡Micronaut en acción!
 
JConf Perú 2020 - Micronaut + GraalVM = <3
JConf Perú 2020 - Micronaut + GraalVM = <3JConf Perú 2020 - Micronaut + GraalVM = <3
JConf Perú 2020 - Micronaut + GraalVM = <3
 
JConf México 2020 - Micronaut + GraalVM = <3
JConf México 2020 - Micronaut + GraalVM = <3JConf México 2020 - Micronaut + GraalVM = <3
JConf México 2020 - Micronaut + GraalVM = <3
 
Developing Micronaut Applications With IntelliJ IDEA
Developing Micronaut Applications With IntelliJ IDEADeveloping Micronaut Applications With IntelliJ IDEA
Developing Micronaut Applications With IntelliJ IDEA
 
CommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
CommitConf 2019 - Micronaut y GraalVm: La combinación perfectaCommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
CommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
 
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
 
Greach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut ConfigurationsGreach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut Configurations
 
VoxxedDays Bucharest 2019 - Alexa, nice to meet you
VoxxedDays Bucharest 2019 - Alexa, nice to meet youVoxxedDays Bucharest 2019 - Alexa, nice to meet you
VoxxedDays Bucharest 2019 - Alexa, nice to meet you
 
JavaDay Lviv 2019 - Micronaut in action!
JavaDay Lviv 2019 - Micronaut in action!JavaDay Lviv 2019 - Micronaut in action!
JavaDay Lviv 2019 - Micronaut in action!
 
CrossDvlup Madrid 2019 - Alexa, encantado de conocerte
CrossDvlup Madrid 2019 - Alexa, encantado de conocerteCrossDvlup Madrid 2019 - Alexa, encantado de conocerte
CrossDvlup Madrid 2019 - Alexa, encantado de conocerte
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Recently uploaded (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Madrid GUG - Grails Plugins: Exporter