Incrustar reporte en formulario java

Creado por jc mouse Domingo, Diciembre 13, 2015

Jasperreport nos brinda su propio visor de reportes, sin embargo en ocasiones queremos mostrar los informes directamente en algún formulario de la aplicación, es decir incrustar el reporte ya sea en un jframe o jpanel. Lograr esto es bastante sencillo, si nos fijamos en el API de JasperReport podremos observar que el visor JRViewer desciende de JPanel por lo que basta con usar el método ADD para agregar el reporte en un jpanel.

Class JRViewer

java.lang.Object
   java.awt.Component
      java.awt.Container
         javax.swing.JComponent
            javax.swing.JPanel
               net.sf.jasperreports.view.JRViewer

Pero observemos esto con dos ejemplo.

Para un reporte sin parámetros hacemos lo siguiente:

try {
   //archivo jasper
   URL jasperUrl = this.getClass().getResource("/com/bolivia/report/rp_people1.jasper");
   JasperReport report = (JasperReport) JRLoader.loadObject(jasperUrl);
   JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, new JMySQL().getConnection() );
   //se crea el visor con el reporte
   JRViewer jRViewer = new JRViewer(jasperPrint);  
   //se elimina elementos del contenedor JPanel
   jpContainer.removeAll();
   //para el tamaño de l reporte se agrega un BorderLayout
   jpContainer.setLayout(new BorderLayout());        
   jpContainer.add(jRViewer, BorderLayout.CENTER);
   jRViewer.setVisible(true);
   jpContainer.repaint();
   jpContainer.revalidate();
} catch (JRException ex) {
   System.err.println(ex.getMessage());
}

reporte incrustado

Para un reporte con parámetros:

Similar al anterior pero usamos un MAP para los parámetros

try{
   //archivo jasper
   URL  jasperUrl = this.getClass().getResource("/com/bolivia/report/rp_people2.jasper");
   JasperReport report = (JasperReport) JRLoader.loadObject(jasperUrl);
   //para los parametro
   Map parametros = new HashMap(); 
   parametros.clear();     
   //Nuestro parametro se llama "pLastName"
   parametros.put( "pLastName", txtParameter.getText() );         
   //agregamos los parametros y la conexion a la base de datos
   JasperPrint jasperPrint = JasperFillManager.fillReport(report, parametros, new JMySQL().getConnection());   
   //se crea el visor con el reporte
   JRViewer jRViewer = new JRViewer(jasperPrint);      
   //se elimina elementos del contenedor JPanel
   jpContainer.removeAll();
   //para el tamaño del reporte se agrega un BorderLayout
   jpContainer.setLayout(new BorderLayout());        
   jpContainer.add(jRViewer, BorderLayout.CENTER);
   jRViewer.setVisible(true);   
   jpContainer.repaint();       
   jpContainer.revalidate();
} catch (JRException ex) {
   System.err.println(ex.getMessage());
}

reportes java

Podemos ver una clase JMySQL(), buenos esa clase nos da la conexión a la base de datos.

El código completo te lo dejo en este enlace pobre <<Soy un enlace>>

Para ejecutar el código, necesitas:

  • Librerías de Jasperreport 5.1.0
  • Driver de conexión “MySQL-connector-java” versión 5.1.23
  • Los reportes y el código SQL están en el RAR de descarga. La base de datos se llama “dbTest”
  • Servidor de base de datos MySQL

Enjoy!

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!

Sobre el autor y el sitio web

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

ENTRADAS QUE TE PUEDEN INTERESAR

4 comentarios en “Incrustar reporte en formulario java”

  1. berceliuz dice:

    como podría visualizar un pdf ya creado .
    es posible hacerlo con esas librerías ?
    gracias por la respuesta.

    1. Mouse dice:

      bueno tendrías que buscar unas librerias para eso, tal vez Apache PDFBox

      1. berceliuz dice:

        investigando un poco la documentación de Apache PDFBox parece que no tiene un visor de pdf.
        y eso es lo que necesito . si pudieras recomendarme otras librerías o alguna forma de como hacerlo.
        gracias

      2. Pergen dice:

        hola, soy nuevo en la programacion con eclipse.
        quiero hacer un reporte con graficos pero me sale el error de exception:
        porfa si alguien me ayuda tengo Ireport 5.6 . gracias desde Malabo Guinea Ecuatorial

        Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap
        at net.sf.jasperreports.engine.component.ComponentsEnvironment.(ComponentsEnvironment.java:56)
        at net.sf.jasperreports.engine.component.ComponentsEnvironment.getInstance(ComponentsEnvironment.java:76)
        at net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.getSchemaLocations(JRReportSaxParserFactory.java:93)
        at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(BaseSaxParserFactory.java:153)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*

Comparte lo que sabes

Categorias

Android Bolivia

Bandera en Alto

Ultimas entradas

Online Flag Waver es una páginas web con la que podemos generar banderas ondeando con la textura que elijamos ya sea des...

Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli...

A continuación tenemos una clase que nos permite arrastrar un archivo de Excel (*.xlsx) y cargar su contenido en una tab...

A continuación te mostramos una guía sobre la nueva nueva función ‘estado‘ de WhatsApp.  Primero que nada, a...

Web amigas