Imprimir

Instalación de iReport

  1. Descargar el generador de informes iReport de JasperForge.org
  2. Versión de Windows:
    • Se descarga un archivo similar a: iReport-3.7.0-windows-installer.exe
    • Al ejecutar el archivo de instalación aparece en el menú Inicio > Todos los programas > Jaspersoft > iReport 3.7.0 > iReport 3.7.0
    • Al abrirlo debe aparecer la ventana de presentación de iReport:

      iReport01

Preparar las Bibliotecas necesarias

Son necesarias las siguientes bibliotecas que se pueden encontrar en la carpeta donde se ha instalado iReport dentro de "ireport/modules/ext".

Todas esas bibliotecas se deben agregar al proyecto creado en Netbeans utilizando "Agregar archivo JAR/Carpeta..." desde el menú contextual de la carpeta "Bibliotecas".

 

reports02

Compilar un report

Crear un report de ejemplo desde la aplicación iReport y guardarla en la carpeta principal del proyecto creado en NetBeans. Por ejemplo, se puede asignar el nombre "reportEjemplo.jrxml".

Desde una clase principal Java, importando la clase "net.sf.jasperreports.engine.JasperCompileManager", utilizar el siguiente trozo de código para compilar el report anterior:

{code}

        try
{
JasperCompileManager.compileReportToFile("reportEjemplo.jrxml");
}
catch(Exception e)
{
System.out.println("Error: "+e.toString());
}

{/code}

Al ejecutar ese código, debe generarse el archivo "reportEjemplo.jasper" que es el report compilado.

Un report también puede ser compilado directamente desde la aplicación iReport desde el botón "Compile report":

reports03

Abrir un report sin conexión de datos

En el iReport es necesario indicar que se genere el report aunque no haya datos. Para ello, en las Propiedades del Report cambiar el valor de la propiedad "When No Data" a "All sections, No Detail".

El código necesario para que abra el report puede ser:

{code}

import java.util.HashMap;
import java.util.Map;
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;

public class Main {

public static void main(String[] args) {
try
{
//Objeto para parámetros
Map parámetros = new HashMap();
//Compilar el informe
JasperReport informeCompilado = JasperCompileManager.compileReport("reportEjemplo.jrxml");
//Rellenar el informe con datos
JasperPrint informeRelleno = JasperFillManager.fillReport(informeCompilado, parámetros);
//Mostrar el informe
JasperViewer.viewReport(informeRelleno, false);
}
catch(Exception e)
{
System.out.println("Error: "+e.toString());
}
}

}

{/code}

Exportar informe a pdf

Se puede seguir el siguiente ejemplo para generar un archivo en formato pdf conteniendo el informe generado:

{code}

JasperExportManager.exportReportToPdfFile(informeRelleno, "reportEjemplo.pdf");

{/code}

Asignación de valores a parámetros

En el informe se pueden incluir parámetros cuyos valores se asignarán en el código fuente.

Para crear un nuevo parámetro, desde iReport buscar la sección "Parameters" y en el menú contextual utilizar "Agregar Parameter". Aparece un nuevo parámetro con el nombre "parameter1". En la ventana de Propiedades se le puede asignar un nuevo nombre en la sección "name", por ejemplo, "TITULO", y en "Parameter Class" se indicará el tipo de dato que contendrá (por defecto, String).

Desde el código se asignará valores a los parámetros con:

{code}

            Map parámetros = new HashMap();
parámetros.put("TITULO", "Texto del título");

{/code}

Se utilizará una nueva llamada al método put del objeto Map para cada parámetro.

Visualización del report desde una ventana modal

Si la llamada a la vista del report (JasperViewer.viewReport) se hace desde una ventana modal, se produce un problema: La ventana del report se queda por detrás de la ventana modal. Para solucionar esto, se puede utilizar el siguiente código que crea un JDialog con el visor del report. Este código debe sustituir a la línea del JasperViewer.viewReport.

{code}
JDialog viewer = new JDialog(new JFrame(),"Vista previa del reporte", true);
viewer.setSize(800,600);
viewer.setLocationRelativeTo(null);
JRViewer jrv = new JRViewer(reportRelleno);
viewer.getContentPane().add(jrv);
viewer.setVisible(true);
{/code}

Cargar el report compilado previamente

Si en lugar de compilar el report desde el código, cada vez que se ejecute, se desea cargar el report previamente compilado se puede utilizar el siguiente código:

{code}
InputStream in = getClass().getClassLoader().getResourceAsStream("reports/miInforme.jasper");
JasperReport report = (JasperReport) JRLoader.loadObject(in);
{/code}

En el ejemplo anterior, se encuentra el informe en el paquete reports de los paquetes de fuentes del proyecto.