domingo, 18 de diciembre de 2016

REPORTES CON iReport



iReport

Introducción a iReport
 La herramienta iReport es un constructor / diseñador de informes visual, poderoso, intuitivo y fácil de usar para JasperReports escrito en Java. Este instrumento permite que los usuarios corrijan visualmente informes complejos con cartas, imágenes, subinformes, etc. iReport está además integrado conJFreeChart, una de la biblioteca gráficas OpenSource más difundida para Java. Los datos para imprimir pueden ser recuperados por varios caminos incluso múltiples uniones JDBC, TableModels, JavaBeans, XML, etc.

¿Qué es iReport

iReport es un programa que ayuda a los usuarios y desarrolladores que utilizan la bibliotecaJasperReports para diseñar visualmente informes.Un pensamiento rico y muy fácil de usar interfaz gráfica de usuario, iReport proporciona todas lasfunciones más importatnt para crear informes de Niza en un poco de tiempo.iReport puede ayudar a las personas que no conocen la biblioteca JasperReports para crear informes complejos y aprender la sintaxis XML echar un vistazo al código generado.iReport puede ayudar a un diseñador de informes cualificados para componer página muy complejaen un ahorro de tiempo.iReport está escrito en Java.Desde la versión 0.2.0 se rewrited totalmente.Por esta razón, setrata de dos manuales de iReport.La dirección del nuevo desarrollo fue tomado por un montón derazones.iReport ha perdido un poco de salir de la interfaz gráfica de usuario efficence win32 nativapara una interfaz clara, el swing puro.Pero esta es la dirección correcta.

Descripción


Es una herramienta de soporte de la librería JasperReports que ayuda a la edición de los informes complejos mediante un editor gráfico, permitiendo la inclusión de gráficos, imágenes y subinformes. Está desarrollada en código Java y es de libre distribución. Las principales características de la herramienta son las siguientes:
·         100% escrito en Java y además OpenSource y gratuito.
·         Maneja el 90% de las etiquetas de JasperReports.
·         Permite diseñar con sus propias herramientas: rectángulos, líneas, eclipses, campos de los textfields, cartas, subinformes, ...
·         Soporta JDBC.
·         Soporta JavaBeans como origen de datos (estos deben implementar la interfaz JRDataSource).
·         Incluye asistentes para crear informes automáticamente.
·         Tiene asistentes para generar los subinformes.
·         Tiene asistentes para las plantillas.
En definitiva, permite crear cualquier tipo de informe de una manera sencilla y rápida a través de una interfaz gráfica intuitiva, diseñada tanto para gente que no está familiarizada con esta tecnología, y que desconoce la sintaxis XML de JasperReports, como a usuarios expertos que ya conocían este lenguaje, ahorrándoles tiempo durante el desarrollo de informes muy elaborados.
El resultado de la utilización de iReport es una plantilla que deberá ser rellenada con los datos que conformarán el informe. Su diseño puede incluir todo tipo de elementos gráficos. A continuación se detallan las secciones que componen un reporte en IReport.
Etiqueta
Descripción
title
Título del reporte. Sólo se muestra en la primera página del mismo
pageHeader
Cabecera de página que puede contener información adicional del reporte
columnHeader
En esta sección se muestran los nombres de los campos a presentar
detail
En esta sección se despliegan los valores correspondientes a los nombres definidos anteriormente
columnFooter
Puede presentar valores totales para algún campo de la sección "detail"
pageFooter
En la parte inferior de cada página para poner fecha, numero de página, etc
summary
Sección para incluir gráficos o cálculos totales
Al diseñar un informe podemos seleccionar las etiqueta que consideremos interesantes para nuestro diseño. Todos estos parámetros constituyen el fichero JRXML, es decir, un diseño de informe que ha de ser compilado por el propio iReport utilizando las clases de JasperReports. Así se consigue un fichero .jasper, el cual servirá de guía para la generación del informe definitivo.

Como todo informe, los datos a mostrar pueden ser estáticos o dinámicos. Por lo tanto iReport  admite un gran número de bases de datos, entre ellas se encuentran MySql, Hsql y 
Oracle. Sin embargo, es interesante realizar un esfuerzo por mantener la separación de las capas, es decir, la capa de persistencia sea independiente de la de presentación, lo que nos facilitará el rápido entendimiento de nuestras aplicaciones y la cómoda realización de modificaciones futuras.

Ejemplo de Uso

Ejemplo de integración de iReport con JasperReports

import java.util.*;
import java.sql.Connection; import java.awt.event.*; 
/*Librerías necesarias para Jasper Reports*/
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*; 

public class cExport_thread extends Thread {
      cConnection conexion;
      public cExport_thread(String Clv_area) {
      }     
/**     * Método del hilo     */
      public void run()    {
         try         {
             //Ruta de Archivo Jasper            
             String fileName="C:\proyectoReporte1.jasper";
             //Obtener una conexión a la base de datos
             conexion = new cConnection();
             Connection con = conexion.mkConection();
              //Pasamos parametros al reporte Jasper.
             Map parameters = new HashMap();
             parameters.put("P_Clv_Area_ads",Clv_area);
              //Preparación del reporte (en esta etapa llena el diseño de reporte)
             //Reporte diseñado y compilado con iReport
             JasperPrint jasperPrint = JasperFillManager.fillReport(fileName,parameters,con);
              //Se lanza el Viewer de Jasper, no termina aplicación al salir
             JasperViewer jviewer = new JasperViewer(jasperPrint,false);
             jviewer.show();
          }
         catch (Exception j)        {
            System.out.println("Mensaje de Error:"+j.getMessage())
         }
         finally{
            conexion.closeConecction();
         }
      }
 }

Requisitos e incompatibilidades

·         Requiere el JDK 1.4 o superior.
·         iReport 3.5.1
·         JasperReport 3.5.1



Librerias que utiliza

  • JasperReport
  • jasperreports-1.0.1.jar
  • commons-digester.jar
  • commons-beanutils.jar
  • commons-collections.jar
  • commons-logging.jar
  • itext-1.02b.jar
  • poi-2.0-final-20040126.jar

 

Instalación de iReport


El iReport viene como un archivo comprimido. Esto contiene los archivos de distribución principales (clases y fuente), algunas plantillas para el ayudante (wizard), todos los .jar requeridos adicionales. Esta herramienta trabaja de manera integrada con el jasperreport, por lo tanto no se requiere una instalación adicional de jasper.
El archivo puede descargarse desde http://sourceforge.net/projects/ireport/
Prerrequisitos
Necesitará disponer de lo siguiente:
§  Apache Ant
§  IReport
§  Jassperreport-0.x.x (usar la versión que viene incluida con iReport)

Instalación y configuración del ambiente de trabajo


 Instalación de ANT
§  Descargar la versión apache-ant-1.6.2-bin.zip  o  superior.
§  Descomprimir  el archivo zip.
§  Crear un directorio con el nombre ANT_HOME o ANT. En el directorio raiz. C:\.
§  Copiar el contenido de Ant en la carpeta creada.
§  Configurar las variables de entorno:
1.    ANT_HOME = C:\ANT_HOME  o  ANT_HOME = C:\ANT
2.    JAVA_HOME = C:\ jdk1.5.0
3.    PATH = C:\ANT\bin

Instalación de iReport.
·        Descargar la version  iReport-0.3.2.zip o superior.
·        Descomprimir el archivo zip
·        Crear un directorio con el nombre iReport en el directorio raiz C:\.
·        Copiar en contenido del iReport en la carpeta creada.
·        Copiar el archivo tools.jar  que se encuentra en “C:\ jdk1.5.0\lib”del jdk al  directorio “C:\iReport\lib” Colocar  el Driver “classes12.jar” de oracle en el directorio “C:\iReport-0.2.2\lib”  (Aplica para cualquier driver JDBC que necesitemos) Configurar las variables de entorno:
1.      CLASSPATH: C:\iReport\lib\jasperreports-0.6.0.jar.
2.      CLASSPATH: C:\iReport\lib\itext-1.02b.jar (este archivo es para el uso de archivos pdf)
§  Finalmente deberá compilar los fuentes. Para esto ubíquese en C:\iReport y ejecute el comando ant

Levantando el iReport

Para levantar la aplicación del iReport, debe dirigirse hasta el lugar donde descomprimió los archivos, ahí ejecutar el comando iReport.bat como se muestra en la siguiente figura:


 Otra forma de levantar la aplicación es a través de ANT, para ello se debe abrir una ventana de cmd, ubicarse en la ruta donde se encuentra instalado el iReport, ej : C:\iReport y colocar el comando ant iReport, como se muestra en la siguiente figura:


 La interfaz gráfica de iReport comienza a cargarse:





 Configurar las opciones: Ir a Tools à Options





 Para configurar el idioma: ir a Tools à Options



Luego presionar “Apply”  y por último “Save”. Notaremos como el idioma de la barra de herramientas ha cambiado en función de nuestra elección.



 Para empezar con iReports:
 Seleccionar “Project à New”


 Seleccionar “File à New Document”



Aquí deberá definir el nombre del reporte, tamaño de la pantalla, orientación, márgenes, etc.
 La apariencia del layout (plantilla) de la página del reporte es la siguiente:
 ˆ”/>


Donde:

§  title Aparece sólo al inicio del reporte. El título se escribe en está sección. Ejemplo: “Reporte de Desempeño de los empleados”
§  pageHeader Aparece en la parte superior de cada página. Puede contener información como la fecha y hora, nombre de la organización, etc.
§  columnHeader Sirve para listar los nombres de los campos que se van a presentar (desplegar). Por ejemplo: “Nombre del Empleado”, “Hora de Entrada”, “Hora de Salida”, “Horas trabajadas”, “Fecha”, etc. 
§  detail En esta sección se despliegan los valores correspondientes a las entradas de campos definidas en la sección anterior. Por ejemplo “Juan Perez”, “09:00”, “18:00”, “9”,”2005-04-27” 
§  columnFooter Puede presentar información sumarizada para cada uno de los campos. Por ejemplo “Total de Horas Trabajadas: 180”
·        pageFooter Aparece en la parte inferior de cada página. Este parte puede presentar, el contador de páginas como “Página 1/7”
§  summary Esta sección se usa para proporcionar información sumarizada de los campos presentes en la sección “detail” por ejemplo para el caso de las horas trabajadas de cada empleado se puede definir un objeto gráfico tipo “pie” para tener una mejor comparación  y comprensión visual de los datos.

Los objetos de texto, imágenes, etc pueden ser colocados en la plantilla del documento usando el método de arrastrar y pegar.

Para insertar texto puro usar:

Para insertar campos (Fields) usar:


Para insertar imágenes usar: 


Cuando insertamos un objeto de texto lo haremos arrastrando el elemento hasta el lugar del documento donde queramos visualizarlo. Seguidamente se presionará clic derecho para editar las propiedades del objeto y así poder definir los valores de fuente, bordes y el contenido mismo del texto.




 A medida que insertemos objetos de texto (estáticos y campos dinámicos), nuestro reporte empezará a definir la apariencia visual que buscamos.

 Los documentos que se generan con iReports + jasperreports tienen varios valores que son seteables o configurables, estos son parámetros, campos (Fields) y variables:

a)Parámetros: son valores generales como el titulo del reporte / subreporte, ubicación, autor, etc.
b)Campos (Fields): son los campos tipo texto que llenaremos desde las consultas lanzadas a la aplicación durante la ejecución del reporte.
c) Variables: una variable es un valor calculado como una sumatoria.
 Para definir los parámetros se tiene que pulsar el botón “Parameters” desde la barra de herramientas






 Los objetos de tipo TextField, deben definir un campo field en su viñeta de propiedades y deben usar el key “textField”. En general debe configurarse como se indica en las siguientes pantallas.



 Una vez que hemos terminado de diagramar nuestro reporte, debemos compilar y luego ejecutarlo. La herramienta nos permite tener una vista previa en varios formatos de la apariencia de nuestro documento.


 Una vez compilado, se tiene que ejecutar el reporte. Para esto iremos a Build à Execute Report


 Observamos que cuando no definimos un datasource los campos aparecen como null.
 Conexión con la Base de Datos.
 Seleccionar DataSource–> Connection/DataSource–>New

§  Name: Escribir el nombre de la base de datos.
§  JDBC Driver: Seleccionar el Driver de la base de datos con la cual se realizará la conexión.
§  JDBC URL: escribir la dirección URL de donde se encuentra alojado el ambiente de trabajo de la base de datos.
§  Especificar  la cadena de conexión con la base de datos, colocar usuario y password.
§  Salvar la configuración de la conexión.


 Presionar el botón Test, para verificar que la conexión este correcta, para la cual deberá aparecer la siguiente ventana:


 Para seleccionar la conexión configurada:  Ir al Menú y seleccionar ” Build à Set Active Connection”. Aparecerá una pantalla como la que se muestra a continuación:


Incluir clases en iReport

Pasos para incluir un clase java en el iReport:
§  Agregamos nuestros campos de la Base de Datos:


§  Creamos la clase que vamos a utilizar:
  CalculosFecha.java
 import java.sql.*;
import java.util.*;
import java.text.*;
import net.sf.jasperreports.engine.*;

 public class CalculosFecha extends JRDefaultScriptlet
{
            public static String user = “xxxxxx”;
            public static String pasw = “xxxx”;
            public static String driver = “oracle.jdbc.driver.OracleDriver”;
            public static String url = “xxxxxx”;
            public static ResultSet rs = null;
            public static Statement st = null;
            public static Connection cn = null;
            public static PreparedStatement pst = null;
            public static int per=0;
  
/*
            Datos del Reporte
*/
            public String hello() throws JRScriptletException
            {
                        return “Mi Primera clase”;
            }
}
§  Le indicamos que vamos a usar una clase:
Uses this Scriplet class..
Le colocamos el nombre de la clase: CalculosFecha (en este caso)


§  Agregamos la descripción de la clase en el iReport:
 TextField Expresión:((CalculosFecha)$P{REPORT_SCRIPTLET}).hello()


§  Compilamos desde mi servidor web, porque si lo hago directamente del iReport me dara error. Entonces lo compilos desde el WEB-SERVER.
   
<!–/*
*********************************************************************
*          Formulario: scriplet.jsp.                                                                                      *
*          Autor: Delia M Medina C.                                                                                  *
*          Fecha de Creacion: 28-09-2004                                                                          *
**********************************************************************
*          Funcion:                                                                                                         ****
**********************************************************************
*/–>
<%@ page import=”net.sf.jasperreports.engine.*” %>
<%@ page import=”net.sf.jasperreports.engine.design.*” %>
<%@ page import=”net.sf.jasperreports.engine.data.*”%>
<%@ page import=”net.sf.jasperreports.engine.export.*”%>
<%@ page import=”net.sf.jasperreports.engine.util.*”%>
<%@ page import=”net.sf.jasperreports.view.*”%>
<%@ page import=”net.sf.jasperreports.view.save.*”%>
<%@ page import=”java.sql.*”%>
<%@ page import=”java.util.*” %>
<%@ page import=”java.io.*” %>
<html>
<head><title>Generando Reporte Nomina……………</title>
<%
            System.out.println(“Comienza el Reporte—————————-“);

 %>

<script language=”JavaScript”>
function regresar(){
            history.back();
}
function error(){
            alert(“Error encontrando procesando el periodo: ” + periodo);
            history.back();
}
</script>
<head>
<%
try{
            ResultSet rs = null;
            Statement st = null;
            String sql = null;
            String driver = “oracle.jdbc.driver.OracleDriver”;
            String connectString = “********”;
            String user = “***************** “;
            String password = “*********”;
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(connectString, user, password);
            /////////////////////////////////////////////
            System.out.println(“********Compilamos pago_nomina.jrxml OK********”);
            System.setProperty(
                        “jasper.reports.compile.class.path”,
                        application.getRealPath(“/WEB-INF/lib/jasperreports-0.6.0.jar”) +
                        System.getProperty(“path.separator”) +
                        application.getRealPath(“/WEB-INF/classes/”)
                        );
            System.out.println(“*****Cargamos el jasperreports-0.6.0.jar OK*********”);
            System.setProperty(
                        “jasper.reports.compile.temp”,
                        application.getRealPath(“/reports/”)
                        );

            JasperCompileManager.compileReportToFile(application.getRealPath(“/reports/mipagina.jrxml”));
           
            System.out.println(“******Fin de la Compilamos el archivos***********”);
            /////////////////////////////////////////////

            File reportFile = new File(application.getRealPath(“/reports/mipagina.jasper”));

            Map parameters = new HashMap();
                                                
            byte[] bytes =
                        JasperRunManager.runReportToPdf(
                                   reportFile.getPath(),
                                   parameters,
                                   conn
                                   );
           
            response.setContentType(“application/pdf”);
            response.setContentLength(bytes.length);
            ServletOutputStream ouputStream = response.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
           
            System.out.println(“jasperPDF OK…………..”);
            ///////////////////////////////////////////////////////////////
            System.out.println(“Fin del reporte pago_reporte_nomina………….”);
           
                                   }catch (JRException e)
                                   {System.out.println(“Error:” +e.getMessage());}
                                   catch (Exception e)
                                   {
                                   e.printStackTrace();
                                   System.out.println(“Error2:” +e.getMessage());
                                   }         
%>
<body >
</body>

</html>





¿Qué es iReport?

Un pensamiento rico y muy fácil de usar interfaz gráfica de usuario, iReport proporciona todas las funciones más importantes para crear informes de Niza en un poco de tiempo.

IReport ha perdido un poco de salir de la interfaz gráfica de usuario efficence win32 nativa para una interfaz clara, el swing puro.
Descripción
Es una herramienta de soporte de la libreria Jasper Reports que ayuda a la edicion de los informes complejos mediante un editor grafico, permitiendo la inclusion de graficos, imagenes y subinformes.

En definitiva, permite crear cualquier tipo de informe de una manera sencilla y rapida a traves de una interfaz grafica intuitiva, disenada tanto para gente que no esta familiarizada con esta tecnologia, y que desconoce la sintaxis XML de Jasper Reports, como a usuarios expertos que ya conocian este lenguaje, ahorrandoles tiempo durante el desarrollo de informes muy elaborados.

A continuacion se detallan las secciones que componen un reporte en IReport.

Todos estos parametros constituyen el fichero JRXML, es decir, un diseno de informe que ha de ser compilado por el propio iReport utilizando las clases de Jasper Reports.

Instalacion de iReport

Otra forma de levantar la aplicación es a través de ANT, para ello se debe abrir una ventana de cmd, ubicarse en la ruta donde se encuentra instalado el iReport, ej : C:\iReport y colocar el comando ant iReport, como se muestra en la siguiente figura: summary Esta sección se usa para proporcionar información suma rizada de los campos presentes en la sección detail por ejemplo para el caso de las horas trabajadas de cada empleado se puede definir un objeto grafico tipo pie para tener una mejor comparación y comprensión visual de los datos.


A medida que insertemos objetos de texto, nuestro reporte empezara a definir la apariencia visual que buscamos.

Los documentos que se generan con iReports + jasperreports tienen varios valores que son seteables o configurables, estos son parametros, campos y variables: Los objetos de tipo Text Field, deben definir un campo field en su vineta de propiedades y deben usar el key text Field .




SUMMARY

What is iReport?

A rich and very easy to use graphical user interface, iReport provides all the most important functions to create nice reports in a little time.

IReport has lost a bit of leaving the GUI efficence native win32 interface for a clear, pure swing interface.
Description
It is a Jasper Reports library support tool that helps edit complex reports through a graphical editor, allowing the inclusion of graphics, images and subreports.

In short, it allows to create any type of report in a simple and fast way through an intuitive graphical interface, designed for people who are not familiar with this technology, and who does not know the XML syntax of Jasper Reports, as well as expert users who Already knew this language, saving them time during the development of very elaborated reports.

Below are the sections that compose a report in IReport.

All these parameters constitute the JRXML file, that is, a report design that has to be compiled by the iReport itself using the Jasper Reports classes.

Installing iReport

Another way to get the application is through ANT, for this you have to open a cmd window, located in the path where the iReport is installed, eg: C: \ iReport and place the ant iReport command, as shown in The following figure: summary This section is used to provide summed information of the fields present in the detail section for example for the case of the hours worked of each employee can define a graphic object type foot to have a better comparison and visual understanding Of the data.

As we insert text objects, our report will begin to define the visual appearance we are looking for.

The documents that are generated with iReports + jasperreports have several values ​​that are settable or configurable, these are parameters, fields and variables: Text Field objects must define a field field in their properties file and must use the key text Field.

RECOMENDACIONES
Para Hacer un Reporte lo primero que se debe hacer es el análisis completo del sistema y sus funciones. Y coger los requerimientos más específicos que al usuario lo sirva  o simplifique su trabajo.
Un reporte es algo fundamental en un sistema ya que gracias a ello vamos a tener un mejor control del tipo de negocio que una persona u empresa posee.
CONCLUSIONES
En este trabajo damos a conocer sobre la importancia que tiene hacer reportes con la herramienta iReport que es un constructor / diseñador permite crear cualquier tipo de informe de una manera sencilla y rápida a través de una interfaz gráfica intuitiva, diseñada tanto para gente que no está familiarizada con esta tecnología, y que desconoce la sintaxis XML de JasperReports, como a usuarios expertos que ya conocían este lenguaje, ahorrándoles tiempo durante el desarrollo de informes muy elaborados espero sea de su total importancia.

APRECIACIÓN DEL EQUIPO
Desde el punto de vista del grupo se afirma que iReport es una herramienta en código abierto de generación de informes muy útil que nos permite generar información detallada en formato PDF, HTML, XLS, CSV o XML. Ha sido desarrollada completamente en Java, por lo que puede ser usada en una amplia variedad de aplicaciones Java para generar contenido dinámico.
GLOSARIO DE TÉRMINOS
Plugins: Un plugin es aquella aplicación que, en un programa informático, añade una funcionalidad adicional o una nueva característica al software. En nuestro idioma, por lo tanto, puede nombrarse al plugin como un complemento.
Reiniciar: Reiniciar el ordenador o computadora es el proceso de recargar el sistema operativo de una computadora.
Wizard: Wizard es el que te indica o te guía en el procedimiento durante una instalación de un programa o aplicación.
Constructor.- Un constructor es una subrutina cuya misión es inicializar un objeto de una clase.
LINKOGRAFÍA