viernes, 24 de junio de 2011

Como crear reportes java con IReport y JCreator

Dudas
Crear reporte con Jasper desde Jcreator pro 4.5
- Librerias a utilizar
- envio de parametros
Muchas gracias.
web www.juanperezu.com

 R:\
En este primer ejemplo usaremos un arreglo de beans para llenar el reporte.

Lo primero que vamos a hacer es crear la plantilla del reporte en IReport.


En la plantilla del reporte se definieron los siguientes parametros que seran pasados desde java en el mapa de parametros del reporte:

  • TITULO
  • NOMBRE_CLIENTE
  • TELEFONO
  • DIRECCION
Tambien se definieron los siguientes campos que son el nombre de las propiedades de los beans con que se populara el datasource desde java:

  • id
  • name
  • qty
  • unitCost
  • subTotal
Despues creamos una variable para calcular el total del reporte en este caso es una variable que suma el campo subTotal.


Ahora procedemos a crear el bean en JCreator. Posteriormente adicionamos las librerias que requiere jasper report para funcionar haciendo lo siguiente:

package co.edu.politecnicojic.reportes.dto;


public class Product {
 private String id;
 private String name;
 private int qty;
 private double unitCost;
 private double subTotal;

 
 public void setId(String id) {
  this.id = id; 
 }

 public void setName(String name) {
  this.name = name; 
 }

 public void setQty(int qty) {
  this.qty = qty; 
 }

 public void setUnitCost(double unitCost) {
  this.unitCost = unitCost; 
 }

 public void setSubTotal(double subTotal) {
  this.subTotal = subTotal; 
 }

 public String getId() {
  return (this.id); 
 }

 public String getName() {
  return (this.name); 
 }

 public int getQty() {
  return (this.qty); 
 }

 public double getUnitCost() {
  return (this.unitCost); 
 }

 public double getSubTotal() {
  return (this.subTotal); 
 }
}







Y agregamos los siguientes jars:

  • iText-2.1.7.jar
  • jasperreports-4.0.2.jar
  • commons-beanutils-1.8.0.jar
  • commons-collections-2.1.1.jar
  • commons-logging-1.0.4.jar
  • poi-3.6.jar
  • commons-digester-1.7.jar
  • groovy-all-1.7.5.jar


Ahora creamos la clase que se encargara de llenar el reporte.

/**
 * @(#)EjemploJasperReport.java
 *
 * EjemploJasperReport application
 *
 * @author Luis Carlos
 * @version 1.00 2011/6/24
 */
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import co.edu.politecnicojic.reportes.dto.Product;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;

public class EjemploJasperReport {
    
    public static void main(String[] args) throws JRException{ 
     Map parameters = new HashMap();
  parameters.put("TITULO", "Factura de Ejemplo");
  parameters.put("NOMBRE_CLIENTE", "Luis Carlos Sanchez Gonzalez");
  parameters.put("TELEFONO", "5555555");
  parameters.put("DIRECCION", "Cll 2 # 36 - 52");
  JasperFillManager.fillReportToFile("C:/Users/Luis Carlos/Documents/JCreator Pro/MyProjects/EjemploJasperReport/classes/Reports/EjemploSQL.jasper", parameters, new JRBeanCollectionDataSource(getProductos()) );
  JasperExportManager.exportReportToPdfFile("C:/Users/Luis Carlos/Documents/JCreator Pro/MyProjects/EjemploJasperReport/classes/Reports/EjemploSQL.jrprint");
    }
    
    public static ArrayList getProductos(){
     ArrayList productos = new ArrayList();
     Product p1 = new Product();
     p1.setId("770123456");
     p1.setName("Producto 1");
     p1.setQty(5);
     p1.setSubTotal(72835);
     p1.setUnitCost(14567);
     Product p2 = new Product();
     p2.setId("770123457");
     p2.setName("Producto 2");
     p2.setQty(5);
     p2.setSubTotal(72835);
     p2.setUnitCost(14567);
     Product p3 = new Product();
     p3.setId("770123458");
     p3.setName("Producto 3");
     p3.setQty(5);
     p3.setSubTotal(72835);
     p3.setUnitCost(14567);
     productos.add(p1);
     productos.add(p2);
     productos.add(p3);
     return productos;
    }
}
El metod public static ArrayList getProductos() se encarga de generar una coleccion con 3 beans de tipo Producto que van a ser usados para popular el detalle del reporte, y en el metodo main se llena el Map de parametros que van a ser enviados al reporte se popula el datasource, se llena el reporte y se genera el archivo pdf del reporte. En este ejemplo se genera un archivo pdf si lo que se desea es que el reporte sea visualizado una vez generado remplazamos las sentencias que se encuentran despues del mapa de parametros en el metodo main por las siguientes:

JasperPrint print = JasperFillManager.fillReport("C:/Users/Luis Carlos/Documents/JCreator Pro/MyProjects/EjemploJasperReport/classes/Reports/EjemploSQL.jasper", parameters, new JRBeanCollectionDataSource(getProductos()) );
JasperExportManager.exportReportToPdfFile(print, "C:/Users/Luis Carlos/Documents/JCreator Pro/MyProjects/EjemploJasperReport/classes/Reports/EjemploSQL.pdf");
JasperViewer.viewReport(print, false);
Y agregamos las siguientes sentencias import:

import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

No hay comentarios: