JasperReports - Diseños

Las plantillas JRXML (o archivos JRXML) en JasperReport son archivos XML estándar que tienen una extensión .jrxml. Todos los archivos JRXML contienen la etiqueta <jasperReport>, como elemento raíz. Esto a su vez contiene muchos subelementos (todos ellos son opcionales). El marco JasperReport puede manejar diferentes tipos de fuentes de datos. En este tutorial, mostraremos cómo generar un informe básico, simplemente pasando una colección de objetos de datos de Java (usando beans de Java) al motor JasperReport. El informe final mostrará una lista de personas con las categorías que incluyen sus nombres y países.

Los siguientes pasos se cubren en este capítulo para describir - cómo diseñar un JasperReport -

  • Creación de una plantilla de informe JRXML y.
  • Vista previa de la plantilla de informe XML.

Creación de una plantilla de informe JRXML

Cree el archivo JRXML, que es jasper_report_template.jrxmlusando un editor de texto y guarde este archivo en C: \ tools \ jasperreports-5.0.1 \ test según la configuración de nuestro entorno.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
   "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports
   http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
   name = "jasper_report_template" language = "groovy" pageWidth = "595"
   pageHeight = "842" columnWidth = "555" leftMargin = "20" rightMargin = "20"
   topMargin = "20" bottomMargin = "20">
  
   <queryString>
      <![CDATA[]]>
   </queryString>
   
   <field name = "country" class = "java.lang.String">
      <fieldDescription><![CDATA[country]]></fieldDescription>
   </field>
	
   <field name = "name" class = "java.lang.String">
      <fieldDescription><![CDATA[name]]></fieldDescription>
   </field>
	
   <columnHeader>
      <band height = "23">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "3" width = "535" 
               height = "15" backcolor = "#70A9A9" />
            
            <box>
               <bottomPen lineWidth = "1.0" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
            <text><![CDATA[]]> </text>
         </staticText>
			
         <staticText>
            <reportElement x = "414" y = "3" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            
            <text><![CDATA[Country]]></text>
         </staticText>
         
         <staticText>
            <reportElement x = "0" y = "3" width = "136" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            
            <text><![CDATA[Name]]></text>
         </staticText>
  
      </band>
   </columnHeader>
 
    <detail>
      <band height = "16">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "0" width = "535" 
               height = "14" backcolor = "#E5ECF9" />
            
            <box>
               <bottomPen lineWidth = "0.25" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
            <text><![CDATA[]]> </text>
         </staticText>
			
         <textField>
            <reportElement x = "414" y = "0" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font size = "9" />
            </textElement>
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{country}]]>
            </textFieldExpression>
         </textField>
         
         <textField>
            <reportElement x = "0" y = "0" width = "136" height = "15" />
            <textElement textAlignment = "Center" verticalAlignment = "Middle" />
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{name}]]>
            </textFieldExpression>
         </textField>

      </band>
   </detail>
	
</jasperReport>

Aquí están los detalles de los campos principales en la plantilla de informe anterior:

  • <queryString>: está vacío (ya que estamos pasando datos a través de Java Beans). Por lo general, contiene la instrucción SQL, que recupera el resultado del informe.

  • <nombre de campo>: este elemento se utiliza para mapear datos de fuentes de datos o consultas en plantillas de informes. name se reutiliza en el cuerpo del informe y distingue entre mayúsculas y minúsculas.

  • <fieldDescription>: este elemento asigna el nombre del campo con el elemento apropiado en el archivo XML.

  • <staticText>: define el texto estático que no depende de fuentes de datos, variables, parámetros o expresiones de informes.

  • <textFieldExpression>: esto define la apariencia del campo de resultado.

  • $ F {país}: esta es una variable que contiene el valor del resultado, campo predefinido en la etiqueta <nombre del campo>.

  • <banda>: las bandas contienen los datos, que se muestran en el informe.

Una vez que el diseño del informe esté listo, guárdelo en el directorio C: \.

Vista previa de la plantilla de informe XML

Hay una utilidad net.sf.jasperreports.view.JasperDesignViewer disponible en el archivo JAR de JasperReports, que ayuda a obtener una vista previa del diseño del informe sin tener que compilarlo o completarlo. Esta utilidad es una aplicación Java independiente, por lo que se puede ejecutar mediante ANT.

Escribamos un objetivo ANT viewDesignXMLpara ver el JRXML. Entonces, creemos y guardemosbuild.xmlen el directorio C: \ tools \ jasperreports-5.0.1 \ test (debe colocarse en el mismo directorio donde se coloca JRXML). Aquí está el archivo build.xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewDesignXML" basedir = ".">

   <import file = "baseBuild.xml" />
   <target name = "viewDesignXML" description = "Design viewer is 
      launched to preview the JXML report design.">
      
      <java classname = "net.sf.jasperreports.view.JasperDesignViewer" fork = "true">
         <arg value = "-XML" />
         <arg value = "-F${file.name}.jrxml" />
         <classpath refid = "classpath" />
      </java>
   </target>

</project>

A continuación, abramos un símbolo del sistema y vayamos al directorio donde se coloca build.xml. Ejecuta el comandoant(Como viewDesignXML es el destino predeterminado). La salida es la siguiente:

C:\tools\jasperreports-5.0.1\test>ant
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

viewDesignXML:
[java] log4j:WARN No appenders could be found for logger
(net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
[java] log4j:WARN Please initialize the log4j system properly.

La advertencia de Log4j se puede ignorar y, como resultado de la ejecución anterior, se abre una ventana con la etiqueta "JasperDesignViewer" que muestra la vista previa de nuestra plantilla de informe.

Como vemos, solo se muestran las expresiones de informe para obtener los datos, ya que JasperDesignViewer no tiene acceso a la fuente de datos real ni a los parámetros del informe. Termine JasperDesignViewer cerrando la ventana o presionando Ctrl-c en la ventana de la línea de comandos.