Sie sind auf Seite 1von 29

Cristhian Herrera

Residencia: Quito (Ecuador)


Cristhian.Herrera@gmail.com / cherrera@kruger.com.ec
Cuento con experiencia en el rea de desarrollo de software y en la docencia acadmica.
Dentro de la construccin de software he manejado las etapas de: anlisis, diseo,
personalizacin e implementacin de aplicaciones bajo ambientes Cliente / Servidor e Internet.
Ver todos los tutoriales del autor
Fecha de publicacin del tutorial: 2005-04-29
Tutorial visitado 286.864 veces Descargar en PDF
Introduccin a iReport
La herramienta iReport es un constructor / diseador de informes visual, poderoso,
intuitivo y fcil de usar paraJasperReports escrito en Java. Este instrumento permite que los
usuarios corrijan visualmente informes complejos con cartas, imgenes, subinformes, etc.
iReport est adems integrado con JFreeChart, una de la biblioteca grficas OpenSource
ms difundida para Java. Los datos para imprimir pueden ser recuperados por varios
caminos incluso mltiples uniones JDBC, TableModels, JavaBeans, XML, etc.
Caractersticas de iReport
La lista siguiente describe algunas de las caractersticas importantes de iReport:
100% escrito en JAVA y adems OPENSOURCE y gratuito.
Maneja el 98% de las etiquetas de JasperReports
Permite disear con sus propias herramientas: rectngulos, lneas, elipses, campos de
los textfields, cartas, subreports (subreportes).
Soporta internacionalizacin nativamente.
Browser de la estructura del documento.
Recopilador y exportador integrados .
Soporta JDBC.
Soporta JavaBeans como orgenes de datos (stos deben implementar la interface
JRDataSource).
Incluye Wizards (asistentes) para crear automticamente informes .
Tiene asistentes para generar los subreportes
Tiene asistentes para las plantillas.
Facilidad de instalacin.
Instalacin de iReport
El iReport viene como un archivo comprimido. Esto contiene los archivos de distribucin
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 instalacin 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 versin que viene incluida con iReport)

Instalacin y configuracin del
ambiente de trabajo
Instalacin de ANT
Descargar la versin 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
Instalacin 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\libdel 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 ubquese en C:\iReport y ejecute el
comando ant

Levantando el iReport
Para levantar la aplicacin 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 aplicacin es a travs 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 grfica 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 funcin de nuestra eleccin.


Para empezar con iReports:
Seleccionar Project New

Seleccionar File New Document


Aqu deber definir el nombre del reporte, tamao de la pantalla, orientacin, mrgenes,
etc.
La apariencia del layout (plantilla) de la pgina del reporte es la siguiente:


Donde:

title Aparece slo al inicio del reporte. El ttulo se escribe en est seccin. Ejemplo:
Reporte de Desempeo de los empleados
pageHeader Aparece en la parte superior de cada pgina. Puede contener
informacin como la fecha y hora, nombre de la organizacin, 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 seccin se despliegan los valores correspondientes a las entradas de
campos definidas en la seccin anterior. Por ejemplo Juan Perez, 09:00, 18:00,
9,2005-04-27
columnFooter Puede presentar informacin sumarizada para cada uno de los
campos. Por ejemplo Total de Horas Trabajadas: 180
pageFooter Aparece en la parte inferior de cada pgina. Este parte puede presentar,
el contador de pginas como Pgina 1/7
summary Esta seccin se usa para proporcionar informacin sumarizada de los
campos presentes en la seccin detail por ejemplo para el caso de las horas
trabajadas de cada empleado se puede definir un objeto grfico tipo pie para tener
una mejor comparacin y comprensin visual de los datos.

Los objetos de texto, imgenes, etc pueden ser colocados en la plantilla del documento
usando el mtodo de arrastrar y pegar.

Para insertar texto puro usar:

Para insertar campos (Fields) usar:

Para insertar imgenes 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 (estticos y campos dinmicos), 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 parmetros, campos (Fields) y variables:

a)Parmetros: son valores generales como el titulo del reporte / subreporte, ubicacin,
autor, etc.
b)Campos (Fields): son los campos tipo texto que llenaremos desde las consultas
lanzadas a la aplicacin durante la ejecucin del reporte.
c) Variables: una variable es un valor calculado como una sumatoria.
Para definir los parmetros se tiene que pulsar el botn Parameters desde la barra de
herramientas









Los objetos de tipo TextField, deben definir un campo field en su vieta 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.
Conexin 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
conexin.
JDBC URL: escribir la direccin URL de donde se encuentra alojado el ambiente de
trabajo de la base de datos.
Especificar la cadena de conexin con la base de datos, colocar usuario y password.
Salvar la configuracin de la conexin.

Presionar el botn Test, para verificar que la conexin este correcta, para la cual deber
aparecer la siguiente ventana:

Para seleccionar la conexin configurada: Ir al Men y seleccionar Build Set Active
Connection. Aparecer una pantalla como la que se muestra a continuacin:

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 descripcin de la clase en el iReport:
TextField Expresin:((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/mi
pagina.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>


Fuentes:
Documentacin de iReports
Documento de Delia Medina, Manual de iReports

A continuacin puedes evaluarlo:
Regstrate para evaluarlo
Por favor, vota +1 o comprtelo si te pareci
interesante
More Sharing ServicesShare|Share on facebookShare on twitterShare on linkedinShare on
emailShare on favoritesShare on print
Anmate y comntanos lo que pienses sobre este TUTORIAL:

Registrate y accede a esta y otras ventajas
Fecha publicacin: 2011-09-21-17:57:15
Autor: mally
como hacer en un reporte se pueda mostrar todo lo de obseravciones ya que en ocaciones es
mui necesario agregar mas informacion pero no semuestra del todo solo una parte
Fecha publicacin: 2011-02-07-16:24:16
Autor: phantom
Hola me parecio muy bueno este tutorial rapido...Les hago una pregunta creo que tal vez
simple.Como deberia hacer para que un textField creciera dinamicamente.Por ejemplo en un
reporte de factura el cual tiene una campo detalle. El problema que tengo es que cuando ese
detalle excede el tamao del textField no me muestra todo sino lo que entra digamos en el
textField
Fecha publicacin: 2009-07-21-03:36:10
Autor:
[loquillo] Hola lo que debes validar es que el formato de tu fecha sea "dd / mm / aaaa"
utilizando como separador el "/", lo otro es que el query lo pruebes en el motor que estas
utilizando (sql,oracle,mysql,etc...), ya que si generas el query automatico desde el jasper te
pone crenillas en los campos, lo otro que te debes fijar en validar, es que tus parametros y
variables sean del mismo tipo en el formulario y en la query ej (string), espero te sirva.
Fecha publicacin: 2009-05-25-04:23:58
Autor:
[juan manuel] esta bueno pero me gustaria saber un poco mas porque tengo una clase en java
para compilar y llenar el reporte pasandole parametrso de fechas y uno numerico y me marca
errores, si me pudieran ayudar se los agredeceria mucho. ANIMO y gracias
Fecha publicacin: 2007-11-24-07:33:15
Autor:
[ELVIS ALARCON ROJAS] ES MUY BUENO EL MANUAL . ES UNA ESTUPENDA
APORTACION PARA LA GENTE DE JAVA
Fecha publicacin: 2006-11-07-12:45:19
Autor:
[hectoryelpan] Hola de nuevo, ya he conseguido arreglarlo, lo posteo por si a alguien le
interesa, solamente teneis que aadir despues de la lnea
"response.setContentLength(bytes.length);" la siguiente orden:
"response.encodeURL("/nombreJSP.pdf"), as funciona tanto en Explorer como en Firefox.
Fecha publicacin: 2006-11-07-12:13:37
Autor:
[hectoryelpan] Hola, a mi me parece un tutorial excelente, sin tener ninguna idea de
JasperReports ni iReports he conseguido crear dinmicamente pdfs desde una aplicacin
web, el problema es que el cdigo solo me funciona en Firefox, con Explorer me devuelve
codigo ASCII en lugar de un PDF, Alguien sabe como puedo arreglar esto? Me sera de
mucha ayuda, si alguien lo sabe que por favor me escriba al mail. Gracias.
Fecha publicacin: 2006-10-13-04:55:25
Autor:
[fabiola] en el irepor hay un codigo de barra llamado barcode como lo puido utlizar para wqeu
melo imprima en mi reporte y le puda pasar los parametos hay que darle una fuente o que
porque memarca por de faul "128" como pudeo midificarlo
Fecha publicacin: 2006-09-10-08:13:43
Autor:
[israel rangel] como puedo agregar el bac code de codigode barra en el irepor para que me lo
reconosca cundo lo compile agragando,los campos requeridos
Fecha publicacin: 2006-09-10-08:10:07
Autor:
[israel rangel] como puedo agregar el bac code de codigode barra en el irepor para que me lo
reconosca cundo lo compile agragando,los campos requeridos
Fecha publicacin: 2006-08-31-03:34:02
Autor:
[hola] me parece un buen tutorial. bueno io soy nuevo utilizando ureport de echo primerizo
utilizando ireport pero kisiera saber como `puedo llamar utilizar ireport y los reportes ke yo
genere y llamarlo desde aplicaciones normales porke el tutorial parece enfocarse a hacer
reportes con aplicaciones web pero no para aplicaciones normales de ventana
Fecha publicacin: 2006-08-01-10:09:49
Autor:
[Ivan] A mi me ha resultado muy util. No se porque a la gente no le gusta. Es necesario
entender minimamente de que va JasperReports, pero esta muy bien.
Fecha publicacin: 2006-07-25-10:48:50
Autor:
[Antonio] Me parece que intenta decir muchas cosas en poco tiempo. Me ha sido poco util ya
que no me ha funcionado casi nada de lo que dice.
Fecha publicacin: 2006-06-14-11:30:06
Autor:
[LUIS MARTINEZ] hola, pienso que le falta mas detalle al reporte
Fecha publicacin: 2006-06-12-10:21:19
Autor:
[Ruth] El tutor me parece excelente!!. Una sugerencia extendiendo este tutorial..Cmo se
podra implementar iReport con BEA Weblogic Workshop?... Desde ya Gracias.
Esta obra est licenciada bajo licencia Creative Commons de Reconocimiento-
No comercial-Sin obras derivadas 2.5

Das könnte Ihnen auch gefallen