Encuesta

¿Cuál es tu interés en ejecutar lenguajes distintos de Java en la máquina virtual Java?

01-12-2008 - 193 votos

Agrega dinamismo a los reportes en JasperReports con DynamicJasper

25/09/2007 10:39 djmamana

DynamicJasper (DJ) es un proyecto open-source que permite a desarrollador crear rapidamente una gran variedad de reportes a través de una intuitiva API escrita en Java. Esta permite definir programáticamente las columnas, grupos, totales, gráficos (charts), sub-reportes, el formato de salida (pdf, Excel, html, etc.) en tiempo de ejecución. La API maneja todo lo relacionado con la diagramación y posicionamiento de los elementos del reporte haciendo el proceso de diseño fácil y automático.

DynamicJasper tiene como objetivo abarcar el 99% de los reportes que se basan en columnas como así también los que tienen grupos (cortes de control). La API permite agregar variables en las cabeceras y pie de las columnas y grupos con operaciones tales como suma, contar, etc. Se puede definir en tiempo de ejecución el orden de aparición de las columnas, los grupos, las variables, los estilos, estilos condicionales, sub-reportes, etc. Existe una aplicación web online de ejemplo que muestras las características principales de DynamicJasper

Características:

  • DJ usa directamente la API de JasperReports, por lo que no hay necesidad de archivos jrxml. Sin embargo se pueden seguir utilizando como plantilla (marca de agua, logo de la compañía, etc.) y permitir a DJ hacer la disposición de los elementos del reporte.
  • Columnas Dinámicas: Se pueden definir las columnas del reporte y su orden de aparición en tiempo de ejecución. Cada una de ellas puede tener su propio estilo (Font de la cabecera, de los datos, colores, bordes, etc.) El ancho de las columnas se acomoda automáticamente hasta alcanzar el ancho de la hoja.
  • Grupo: Se pueden crear grupos dinámicamente usando una columna como criterio, o expresiones más complejas (programadas en Java!). Cada grupo tendrá su cabecera y pie, los cuales pueden tener variables mostrando subtotales de operaciones de las columnas.
  • Formato condicional: DJ provee una manera sencilla de agregar formato condicional a los elementos de una columna. Se pueden utilizar expresiones sencillas o expresiones customizadas escritas en Java para definir cuando utilizar un estilo en particular.
  • Opciones de reporte dinámico configurables en tiempo de ejecución tales como tamaño y orientación de página, márgenes, columnas (tipo guía telefónica), etc. Los elementos siempre se acomodan a las nuevas condiciones.
  • Exportar a los formatos más populares no es un problema, ya que DJ se basa en JasperReports y puede exportar todo lo que JasperReports (Excel, PDF, OpenOffice, Word, HTML, etc.) Aunque DJ agrega valor al poder exportar a Excel sin formateo de los datos, sin salto de página, sin celdas vacías en el medio, lo cual es ideal para usuarios que utilizaran las hojas de cálculo para hacer otras operaciones. Esto es difícil de lograr simplemente utilizando editores como iReport.
  • Subreportes: Agregar un sub reporte se logra en 1 minuto. Los sub reportes también pueden ser dinámicos. Se puede utilizar el DJ para concatenar varios reportes en uno solo.
  • Auto texto: DJ tiene incorporado autotextos tales como “Pagina 1 de 10”, “Creado el 10 de Octubre de 2007”, o mensajes definidos por el usuario. Los mismos se pueden ubicar en la cabecera o pie de página del reporte.
  • Imágenes en el encabezado: Se pueden definir hasta 3 imágenes para la el encabezado de la primer página (izquierda, centro, derecha) y otras 3 distintas para el resto de las páginas. Ideal para agregar en 1 línea de código el logo de la organización, etc.
  • Gráficos (Charts): Agregar reportes se ha vuelta una tarea realmente sencilla a través de DJ. Solo hay que indicarle que columnas utilizar y el tipo de gráfico.
  • Columnas Calculadas: La API de DJ provee una forma amigable de crear una columna calculada, las cuales pueden tener fila a fila una operación entre los elementos de la misma de otras columnas.
  • Soporte para internacionalización a través de i18N
  • Integración con WebWork a través del dynamic-jasper result type.

La documentación es completa, incluye una sección “how-to” con ejemplos de cómo realizar las tareas más comunes. También hay disponibles ejemplos funcionando (que generan el reporte en PDF).

A partir de la versión 1.3.0 DJ soporta JasperReports 2.0

Web: http://dynamicjasper.sourceforge.net/
descarga:
http://sourceforge.net/project/showfiles.php?group_id=188060

 

Volver a actualidad

Etiquetas: j2se, reports, dynamicjasper

Comentarios: 27

  • Anónimo 25/09/2007 12:37

    En los ultimos 2 meses esta noticia ha aparecido, con esta, ya tres veces. Joder que cansinos con la libreria esta. Siendo además que existen alternativas mejores, como BIRT de Eclipse

  • Anónimo 25/09/2007 15:40

    BIRT?  que mejoras tiene BIRT vs IReports?  El rendimiento es el mismo? BIRT no es de pago para uso profesional?

     

    gracias

  • darkcavie 25/09/2007 16:04

    Es cierto, creo que debemos proponer mejoras para el mecanismo de votación de noticias (las votaciones negativas creo que son buena idea) porque esta no es noticia, pero podría ser un interesantísimo artículo.

    Por otro lado, para los casos simples BIRT si es opción, y no es de pago para uso comercial hasta donde tengo entendido. Pero para casos complejos es mejor Jasper Dynamics, que es el nombre con que había aparecido en las menciones anteriores. Ojalá mi jefe entendiera que se pueden usar los dos, cada uno en su nicho, pero bueno...

  • Himura 25/09/2007 16:53

    Es un buen artículo, yo actualmente trabajo con un API similar, se llama Alphablox es de IBM y es de paga. El API es bueno aunque no soporta mucho para la configuración del reporte mas bien su fuerte es el manejo de reportes a tiempo ejecución.

    No he manejado JasperReports pero parece una buena alternativa.

     Saludos

  • Anónimo 25/09/2007 19:28

    Hola, hay una libreria similar que se esta utilizando para un desarrollo importante en un organismo público de Argentina y por lo tanto debería ser propiedad intelectual del Gobierno Argentino. Que raro no?

    Saludos.

  • Anónimo 25/09/2007 19:58

    BIRT pertenece a la fundación eclipse y permite tanto usarse modo "aplicación de escritorio" (lo digo por la mención a iReport) con notables diferencias sobre todo de facilidad y usabilidad respecto al iReport que más feo no puede llegar a ser. Y sobre todo tiene ventajas, desde mi punto de vista, al usarlo como API pues tiene una filosofía bastante diferente a JasperReports u otras herramientas de reporting, usa una estructura de paginación de flujo, más cercana a las aplicaciones Web (respecto a la estructura por paginación de jasperreports). Además incluye un visor web ya implementado bastante decente y la api es realmente buena usando ampliamente patrones factory y similares.

     

    BIRT es una plataforma para desarrollo de soluciones de reporting a nivel empresarial, jasperreports es una simple libreria para soluciones más simples. Cada cual para lo suyo.

  • abraham 26/09/2007 07:52

    Hola darkcavie,

     

    El mecanismo de publicación actual de javaHispano permite que un mismo elemento esté en varias secciones. Esta "noticia" la hemos añadió también a los artículos: http://www.javahispano.org/contenidos.type.action?type=ARTICLES&menuId=ARTICLES.

    Y llevas razón en que actualmente puede resultar un poco confuso como funcionan algunas cosas dentro del portal. Pero la realidad es que ni nosotros mismos sabemos cómo deben funcionar; y no quiero decir que no comprendemos como funciona el portal (que ha sido desarrollado por gente de la casa) sino que no tenemos claro qué uso le queremos dar a la funcionalidad que está implementada. Estamos, literalmente, aprendiendo y modificando cosas en base al uso que vosotros mismos les dais.

  • Anónimo 26/09/2007 08:46

    Pues yo hace mucho tiempo q estoy desarrollando con jasperreports, informes muy muy grandes y aunque a partir de un numero determinado de páginas deja el servidor practicamente destrozado es la mejor opcion para generar informes con una libreria free.

    En cuanto a DJ nos vendrá muy bien pues podremos ponerle a los cliente un "INFORMENOVA" jeje

  • Anónimo 27/09/2007 01:14

    hola  me  he descardado el  jar de DynamicJasper y algunos ejemplo de su pagina  pero a la hora de ejecutar los ejemplo de me  baje  me sale error porke me falta un  un jar  que no se como se llama y bueno el error es esta importacion  import ar.com.fdvs.dj.test.domain.Product; bueno si alguien sabe de donde sale esta  importacion  porfa  mandenmelo a mi correo  ke es darkx_valen666@hotmail.com   desde ya  gracias .

                                          < -------------------- SdarknoT -------------------->

     

  • martosoler 27/09/2007 16:07

    A mi me parece que esta libreria que hace uso de la API de Jasper Reports comparada con IReports que es un IDE para armar reportes, se debate la interminable pelea entre "control" de lo que uno esta haciendo y "facilidad" para hacerlo.

    Esta libreria provee mucho control pero el tener que hacerlo todo programaticamente me parece un muy feo punto en contra en la era de la vaguez ...

    Nosotros usamos IReports y estamos contentos con ello ... HASTA QUE PASE LO CONTRARIO

    Es mi opinion

  • Anónimo 28/09/2007 08:54

    Hola,

    yo tengo una aplicación hecha con struts y con Beans para el acceso a la capa de datos, nuestra BD es Oracle 9 y para los informes hemos utilizado El Report de oracle 6. Con esta herramienta tan antigua no se pueden hacer muchas virguerías...de hecho seguramente haya que rehacer de nuevo todos los informes de la aplicación... pero si estuviérais ante esta situación elegirías otra opcion que los reports de oracle? Espero vuestra opinión, Gracias.

  • Anónimo 28/09/2007 21:01

    Creo que depende de que necesites hacer, y evaluar que me da cada herramienta, particularmente no conozco la herramienta de reportes de Oracle y no me gusta esta atado a tecnologías propietarias. Si actualmente lo que me da la herramienta me sirve para cumplir con los requerimientos del negocio y me da un marco para que pueda hacerlo de manera ágil entonces no veo motivos para no usarla, ahora si tengo que recortar funcionalidad o si para logarla tengo que hacer cosas que luego serán difíciles de mantener o modificar creo que esta claro que debería usar otra cosa, en ese caso un framework como Dynamicjasper seria mas conveniente.

  • Anónimo 29/09/2007 02:36

    Muy bien con la noticia, yo he desarrollado varios proyectos y he utilizado el ireport como herramienta para elaborar mis reportes.....ahora con este API la cosa suena prometedora, voy a probarla y comentaré de nuevo =)!!!

  • djmamana 29/09/2007 04:08

    Hola, respondo a "Anónimo" sobre su inquietud respecto a que herramienta usar...

    Hay varios factores a tener en cuenta y varios de ellos te los respondió el otro "anónimo", acá van mis puntos de vista.

    1) Como estas en una migración de reportes que YA EXISTEN, es probable que te pidan que los nuevos sean exactamente iguales o con muy poca diferencia a los ya existentes. Ahí hay una limitación y tal vez necesites usar una herramienta donde puedas diseñar graficamente (tipo iReport) y ver que lo que saldrá es igual a lo que tenías.

    2) Asegurate de que el cliente (u organización) no tiene problemas en usar librerías open-source, ya que a veces, por más buena que sea la solución, si no hay soporte 7x24, simplemente no es una opción.

    3) Asegurate que los reportes actuales no utilicen funciones especiales de Oracle a las que solo podes acceder a través de Oracle Reports. DJ se apoya en JasperReports, lo más que podes tener son data sources comunes y corrientes, de manera que irte a JasperReport/DJ significaría hacer de nuevo los queries en SQL.

    4) Paginación: Para reportes muy grandes, Oracle Reports tiene la ventaja de que te puede tirar la primer página del reporte cuando las otras todavía se están calculando, con JasperReports viene todo junto, a veces eso es un problema porque el usuario termina diciendo que el sistema es lento.

    5) DJ es muy útil para obtener rápidos resultados y para absorber cambios, si los usuarios aprovechan la migración para hacer cambios, ir y venir en este proceso, Dj te va a servir mucho.

    6) DJ no es excluyente de JasperReports, al contrario, le amplía sus características. Según te convenga podes tener reportes tradicionales usando archivos jrxml, y para los que DJ sea lo más indicado, usarlo.

    7) Si es un buen momento para dar valor agregado a la aplicación y darle visibilidad al área, aprovechar la oportunidad (DJ permite columnas dinámicas, grupos dinámicos, etc.)

    8) Si los reportes se adaptan a los del tipo que DJ puede hacer rápidamente, no lo dudes, por lo menos yo no disfruto jugar ni con el iReport ni con otras herramientas de reporting, justamente parte de lo que propone DJ es que los reportes no sean “una gran tarea” dentro de los proyectos.

    Espero haber contestado alguna de tus dudas.

    Saludos y suerte.

    Dj

  • tristam 01/10/2007 13:09

    Muy bien, gracias a todos por vuestra opinión, todavía estoy pensando porque Diablos se les ocurrió a quién se le ocurrió hacerlo con report de oracle si existían otras opciones más fáciles. En fin, hablaré del tema y probaré la herramienta DynamicJasper.

    PD: Disculpad, pero el Anónimo era yo, solo que no me registre antes de escribir el post.

    Lo dicho. Gracias. :P

  • Anónimo 02/10/2007 00:01

    miren  me he descargado  todos los jar pero cuando  quiero ejecutar  uno de los ejemplo  que me descargue de la pagina  no puedo porque me pide  que importe esto import junit.framework.TestCase;  y no se de donde sale  porfa mandenme algunas ejemplos a  mi correo darkx_valen666@hotmail.com

     

                               < ---------------------  sdarknot ---------------------> 

     

  • Anónimo 27/11/2007 05:34

    Y para hacer reportes no han visto Pentaho Reporting? Parte de la base de JFreeReport, es open source y gratis... Yo solo he mirado la web todavia no lo pruebo pero suena prometedor... les dejo la web http://reporting.pentaho.org/

  • djmamana 29/11/2007 03:24

    Hola!!! Pentaho es una suite muy completa para hacer BI (Business Intelligence), es la "pata" del openSource dentro de este mundo.

    Este proyecto lo que hizo fue junta/integrar las tres herramientas necesarias para hacer BI: 1 motor de cubos (mondrian), un engine de reporting (JFreeReports) y una herramienta de ETL (Kettle) para poder importar datos de casi cualquier lado al cubo. Finalmente el componente "Pentaho" quien explota la información.

    Esta suite herramientas va mucho mas allá del problema que pretende abordar DynamicJasper, con suerte DynamicJasper podría reemplazar/complementar a JFreeChart en esta suite si es que no hubiese altos requisitos de layout y diseño en los reportes, por lo general son reportes de BI tienen alto impacto visual, cuando el DJ apunta mas que nada a listados más comunes y corrientes

  • Anónimo 04/01/2008 18:29

    Este mensaje es para todos ustedes que tanto saben de reporteadores, yo apenas estoy empezando, pero he estado en estos ultimos dias tratando de probar ejemplos que he bajado de internet sobre codigo java usando el ireport y el jasperreport pero hasta ahora ninguno me ha funcionado, siempre me salen excepciones, les agradezco si tienen ejemplos que realmente funcionen, enviarmelos al correo: beltranchamorro@yahoo.es

  • sombro 21/02/2008 14:44

    Estoy probando reporteadores pero no me han funcionado por excepciones y errores, bueno estoy en eso en realidad, si alguien me puede ayudar lo agradeceria, algun tutorial, ejemplos, etc.... cualquier cosa es bien recivida (java), gracias.

     

    sombro_cm@yahoo.com

  • Anónimo 02/04/2008 05:48

    People:

    Y a mi que en mi universidad mi jefe de proyecto me esta obligando a hacer un reportador para una aplicacion desktop, despues de esto no me quedan ganas de seguir jejeje.

    Creo que mejor trato de convencerlos en usar uno hecho, o mejor aun, mejorar uno existente

    Saludos....

  • Anónimo 16/05/2008 18:08

    IREPORTS!!!!

     

    Hola!, tengo una base de datos bastante simple,

    datatime (DATETIME) value (DOUBLE) template_id(INT)

     

    +----+---------------------+-------+-------------+--------+
    | id | datatime | value | template_id |
    +----+---------------------+-------+-------------+--------+
    | 6 | 2008-05-09 09:00:00 | 0 | 1 |
    | 7 | 2008-05-09 09:05:00 | 0.1 | 1 |
    | 8 | 2008-05-09 09:10:00 | 0.2 | 1 |
    | 9 | 2008-05-09 09:15:00 | 0.3 | 1 |
    | 10 | 2008-05-09 09:20:00 | 0.4 | 1 |
    | 1 | 2008-05-09 09:00:00 | 0.5 | 2 |
    | 2 | 2008-05-09 09:05:00 | 1 | 2 |
    | 3 | 2008-05-09 09:10:00 | 1.5 | 2 |
    | 4 | 2008-05-09 09:15:00 | 2 | 2 |
    | 5 | 2008-05-09 09:20:00 | 2.5 | 2 |
    +----+---------------------+-------+-------------+--------+

     

    la idea es crear un grafico de series de tiempo que muestre en el eje X datatime y en el eje Y valores de value.

    El query que se hace sobre la tabla es:

    Select * from data_value
    order by template_id, datatime;

     

    y en las propiedades del grafico creo dos series de tiempo:

    - La primera:

    * Expresion de la serie: "template = 1"

    * Expresion valor de X = $F{prueba}

    * Expresion valor Y = ( $F{template_id}.equals(new Long(1)) ? $F{value} : null )

     

    - La segunda:

    * Expresion de la serie: "template = 2"

    * Expresion valor de X = $F{prueba}

    * Expresion valor Y = ( $F{template_id}.equals(new Long(2)) ? $F{value} : null )

     

    Pero ocurre que unicamente muestra la linea para template = 2. De hecho, si existieran mas entradas en la tabla para otros templates_id (3,4)... siempra grafica es el ultimo.

     

    Que puedo hacer? Gracias!

  • Anónimo 19/05/2008 18:00

    hola, eh leido acerca del DJ(DynamicJasper) y la vdd me ha interesado mucho, actualmente necesito elaborar un reporte donde el usuario sea el que decida como sera, y eso de las columnas dinamicas esta perfecto para eso. Tengo un proyecto web en .NET utilizo visual, y kisiera saber como puedo utilizar DJ en mi proyecto o d k manera lo puedo implementar ya que desconozco. Gracias

  • Anónimo 27/08/2008 17:01

    BUen dia , para los que han usado o usan birt , me baje la version birt 2.3.0 anteriormente tenia la europa y en esa version al exportar a excel mis reportes todo salia correcto , se exportaban encabezados pies de pagina ,si tenia un campo que fuera caracter y tuviera por ejemplo 0456789 me lo exportaba tal cual, ahora con la ultima version ganymode tengo problemas que a lo mejor sean porque desconozco si tengo que configurar algo pero al exportar a excel no me baja los encabezados ni pies de pagina que puedo hacer?????

  • Anónimo 01/10/2008 21:27

    El ireport no sirve para una mierda es una porqueria de reporteador no se puede ni sumar, entonces para que.

  • Anónimo 22/10/2008 16:05

    Buenas Tardes necesito su ayuda es URGENTE!!!!. Tengo 3 compañias la 20 la 30 y la 40 dependiendo la compañia necesito colocar en Jasper Report una imagen. Ayudenme porfa!!! El jasper hace refrencia a img_1 y no entiendo...

  • Anónimo 29/10/2008 17:00

    hola buenos dias como puedo conectar los reportes hechos en ireport con php

Escribe tu comentario

Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano