The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

Archivos por Etiqueta: JasperForge

Código Java – Abrir Reportes Creados con JasperReports


Este es el Ejemplo #20 del Topic: Programación Gráfica en Java.

Los reportes son otras de las utilidades más importantes en las aplicaciones ya que su función es dar al usuario información ordenada y limpia así como un formato adecuado para poder ser llevado a impresión o almacenarlo en algún tipo de fichero como .doc, .odt, pdf, etc.

Recuerdo que hace muchos post anteriores hablé sobre JasperReports, una herramienta Open Source para emitir reportes en Java. Pueden usarlo externamente descargándolo desde jasperforge, o instalar el complemento en netbeans como se explicó en el post mencionado (Instalación de JasperReports).

El siguiente paso es realizar el reporte, que no es nada complicado, basta con establecer la conexión a la base de datos que deseemos, arrastrar los campos de las tablas que necesitemos y ordenarlos, darle un formato decente y ya está, al guardarlo debe generarse un fichero .jrxml, al cual invocaremos desde nuestro código fuente.

Antes de continuar, debemos contar en el proyecto con la librería:

jasperreports-3.7.6.jar

Si antes se instaló el JasperReports es posible que la librería ya lo tengamos en el ordenador, incluso el IDE de desarrollo lo tiene indexado, solo deberá ser añadido a proyecto.

Otras de la librerías que necesitaremos están comentados en el encabezado del código de Ejemplo.

El siguiente procedimiento va a recibir como parámetro la ubicación del reporte dentro del proyecto, para ello será necesario incluir los reportes en algún directorio dentro del proyecto en el que trabajamos, en mi caso la estructura es la siguiente:

beastieux --> reports --> MyReporte.jrxml

...

 private void abrirReporte(String archivo)

    {

        try {

            JasperReport report = JasperCompileManager.compileReport(archivo);

            JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());

            JasperViewer.viewReport(print, false);

        } catch (JRException jRException) {

            System.out.println(jRException.getMessage());

        }

    }

...

La linea de código encargada de general la ruta absoluta de la ubicación del reporte es el siguiente:


...

getClass().getResource("/beastieux/reports/MiReporte.jrxml").getPath()

...

Además, algo muy importante que se necesita para abrir el reporte es la conexión a la base de datos. En este ejemplo lo hice con PostgreSQL, ustedes pueden hacerlo con el que gusten, pueden verlos en los ejemplos de conexión a diferentes base de datos realizados en los post anteriores de este tutorial. Como observarán, la función coneccionSQL() nos retorna la conexión a la base de datos, el cual será usado directamente como tercer parámetro en la linea:


...

JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());

...

Código de Ejemplo:


 /**

 * jasperreports-3.7.6.jar

 * commons-digester-1.7.jar

 * commons-logging-1.0.4.jar

 * commons-collections-2.1.1.jar

 * commons-beanutils-1.8.0.jar

 */

package beastieux.gui;

import java.awt.CardLayout;

import java.sql.Connection;

import java.sql.DriverManager;

import java.util.HashMap;

import javax.swing.JButton;

import javax.swing.JFrame;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.view.JasperViewer;

/**

 *

 * @author beastieux

 */

public class Ejm20_JasperReport extends JFrame {

    public Ejm20_JasperReport()

    {

        JButton btn1=new JButton("Abrir Reporte");

            btn1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                btn1ActionPerformed(evt);

            }

        });

        this.add(btn1);

        this.setLayout(new CardLayout());

        this.setSize(200,100);

        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    }

    private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {

        abrirReporte(getClass().getResource("/beastieux/reports/MiReporte.jrxml").getPath());

    }

    private void abrirReporte(String archivo)

    {

        try {

            JasperReport report = JasperCompileManager.compileReport(archivo);

            JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), coneccionSQL());

            JasperViewer.viewReport(print, false);

        } catch (JRException jRException) {

            System.out.println(jRException.getMessage());

        }

    }

    private Connection coneccionSQL()

    {

            try

            {

                    String cadena;

                    cadena="jdbc:postgresql://127.0.0.1:5432/postgres";

                    Class.forName("org.postgresql.Driver");

                    Connection con = DriverManager.getConnection(cadena, "usuario","contraseña");

                    return con;

            }

            catch(Exception e)

            {

                   System.out.println(e.getMessage());

            }

            return null;

    }

    public static void main(String args[])

    {

        Ejm20_JasperReport obj = new Ejm20_JasperReport();

        obj.setVisible(true);

    }

}

Debemos tener especial cuidado con los reportes creados en diferentes sistemas operativos, mas que nada en los tipos de letras usado (Tipografía), por ejemplo creas el reporte en Windows haciendo uso de Times New Roman te podría generar un error si lo tratas de abrir en Linux o viceversa, al final, eso se corrige en el archivo jrxml generado en las partes donde hace mención a la fuente.

JasperReports – Herramienta Open Source para elaboración de Reportes en NetBeans


Hoy quiero mencionarles a JasperForge, un proyecto Open Source que va de la mano  con JasperSoft,  el lado comercial del mismo, toda una suite de recursos requeridos en el proceso de presentación de información extraída de  una fuente de datos cualquiera. JasperReports es una de las herramientas mas populares para la emisión de reportes que tiene integración con Java, también podemos mencionar a iReport como diseñador de reportes,  JasperServer como un servidor de reportes via Web, JasperAnalysis que presenta conectividad con bases de datos OLAP, o mucho mejor JasperETL exclusivamente para Business Intelligence,  que interviene en la presentación de datos desde el procesos de ETL con el que se consolida la información de los Datamarts, Datawarehouse, o inclusive de Minería de datos.

Reportes Open Source

Si eres programador en Java seguro que lo conoces, y si estás iniciándote, lo tienes a la mano. xD.  Actualmente lo estoy usando en un proyecto que desarrollo y va genial.

Ahora, ¿Cómo integrarlo en nuestra IDE de Desarrollo?, yo solo lo he integrado en NetBeans, que es el IDE en el que yo suelo trabajar a menudo, los pasos para integrarlo son relativamente sencillos como :

1) Descargar el Plugin para NetBeans 3.x (Aquí)

2) Desde NetBeans ir a:

Tool -> Plugings -> Downloaded -> Add Plugins -> (Seleccionar los archivos con extensión .nbm)

3) Instalarlos: En mi caso los archivos *.nbm que he obtenido al descomprimir el archivo descargado anteriormente fueron:

iReport-3.7.6.nbm

jasperreports-components-plugin-3.7.6.nbm

jasperreports-extensions-plugin-3.7.6.nbm

jasperserver-plugin-3.7.6.nbm

Ahora ya está todo en su sitio, si deseas trabajar con el reporteador en modo diseño bastará con agregar un Emply Report al proyecto desde el menú File -> New File

A %d blogueros les gusta esto: