JasperReport: Usando JasperViewer

JasperReport: Usando JasperViewer - GUSTAVO CORONEL
CONTEXTO
JasperReport es el reporteador más utilizado en Aplicaciones Java, para el diseño de los reportes se utiliza iReport.
Se manejan dos tipos de archivos, uno de extensión .JRXML que se trata de un archivo XML con el diseño de reporte y otro de extensión .JASPER que es la versión compilada y el que debes ejecutar ejecutar.
En este articulo comparto un código para ejecutar un reporte con JasperReport y mostrarlo en un componente JasperViewer. El reporte está basado en una sentencia SQL - SELECT.
EJECUCIÓN DEL REPORTE
Este código podría estar en un botón o tal vez en una opción de un menú.
Connection cn = null;
try {

  // El objeto Connection
  cn = AccesoDB.getConnection();

  // Parámetros
  String fileLogo = "/pe/egcc/eurekaappcs/img/logo.gif";
  InputStream isLogo = Class.class.getResourceAsStream(fileLogo);     
  Map pars = new HashMap<>();
  pars.put("LOGO", fileLogo);

  // Cargando el archivo compilado
  String fileRepo = "/pe/egcc/eurekaappcs/report/repoClientes.jasper";
  InputStream isRepo = Class.class.getResourceAsStream(fileRepo);
  JasperReport jrRepo = (JasperReport) JRLoader.loadObject(isRepo);
  JasperPrint jpRepo = JasperFillManager.fillReport(jrRepo, pars, cn);

  // Visualizando el Reporte
  JasperViewer viewer = new JasperViewer(jpRepo, false);
  viewer.setTitle("REPORTE DE CLIENTES");
  viewer.setVisible(true);

} catch (Exception e) {
  Dialogo.error(rootPane, e.getMessage());
} finally{
  try {
    cn.close();
  } catch (Exception e) {
  }
}
CODIGO FUENTE
En esta sección te presento un video de una aplicación CLIENTE-SERVIDOR desarrollada con Java y Oracle.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.



1 comentario:

  1. Estoy en el caso de generar reporte de todas las facturas que se generaron en un día .... Estoy usando Jasper Report y genera las facturas de manera independiente uno a la vez.. yo quiero unir en un solo reporte todas las facturas..
    ESTOY QUE USO ESTE CODIGO
    try {
    // Generar los informes JasperPrint individualmente
    List jasperPrintList = new ArrayList<>();
    jasperPrintList.add(/* Lógica para generar el primer informe JasperPrint */);
    jasperPrintList.add(/* Lógica para generar el segundo informe JasperPrint */);

    // Combina los JasperPrints en uno solo
    JasperPrint mergedJasperPrint = mergeJasperPrints(jasperPrintList);

    // Muestra el informe combinado en JasperViewer
    JasperViewer.viewReport(mergedJasperPrint, false);

    } catch (JRException e) {
    e.printStackTrace();
    }
    }

    private static JasperPrint mergeJasperPrints(List jasperPrintList) throws JRException {
    JasperPrint mergedJasperPrint = new JasperPrint();
    List pages = new ArrayList<>();

    for (JasperPrint jasperPrint : jasperPrintList) {
    for (JRPrintPage page : jasperPrint.getPages()) {
    pages.add(page);
    }
    }

    for (JRPrintPage page : pages) {
    mergedJasperPrint.addPage(page);
    }

    Y el resultado solo se ve el número de páginas y no el contenido en JasperViewer

    ResponderEliminar