JasperReports - Dessins

Les modèles JRXML (ou fichiers JRXML) dans JasperReport sont des fichiers XML standard, ayant une extension .jrxml. Tous les fichiers JRXML contiennent la balise <jasperReport>, comme élément racine. Celui-ci contient à son tour de nombreux sous-éléments (tous sont facultatifs). Le framework JasperReport peut gérer différents types de sources de données. Dans ce tutoriel, nous montrerons comment générer un rapport de base, simplement en passant une collection d'objets de données Java (à l'aide de beans Java), au moteur JasperReport. Le rapport final affichera une liste de personnes avec les catégories comprenant leurs noms et pays.

Les étapes suivantes sont couvertes dans ce chapitre pour décrire - comment concevoir un JasperReport -

  • Création d'un modèle de rapport JRXML et.
  • Aperçu du modèle de rapport XML.

Création d'un modèle de rapport JRXML

Créez le fichier JRXML, qui est jasper_report_template.jrxmlà l'aide d'un éditeur de texte et enregistrez ce fichier dans C: \ tools \ jasperreports-5.0.1 \ test selon la configuration de notre environnement.

<?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>

Voici les détails des principaux champs dans le modèle de rapport ci-dessus -

  • <queryString> - Ceci est vide (car nous transmettons des données via Java Beans). Contient généralement l'instruction SQL, qui récupère le résultat du rapport.

  • <nom du champ> - Cet élément est utilisé pour mapper des données provenant de sources de données ou de requêtes vers des modèles de rapport. name est réutilisé dans le corps du rapport et est sensible à la casse.

  • <fieldDescription> - Cet élément mappe le nom du champ avec l'élément approprié dans le fichier XML.

  • <staticText> - Ceci définit le texte statique qui ne dépend d'aucune source de données, variable, paramètre ou expression de rapport.

  • <textFieldExpression> - Ceci définit l'apparence du champ de résultat.

  • $ F {country} - Il s'agit d'une variable qui contient la valeur du résultat, champ prédéfini dans la balise <nom du champ>.

  • <band> - Les bandes contiennent les données, qui sont affichées dans le rapport.

Une fois la conception du rapport prête, enregistrez-la dans le répertoire C: \.

Aperçu du modèle de rapport XML

Il existe un utilitaire net.sf.jasperreports.view.JasperDesignViewer disponible dans le fichier JAR JasperReports, qui permet de prévisualiser la conception du rapport sans avoir à le compiler ou à le remplir. Cet utilitaire est une application Java autonome, qui peut donc être exécuté à l'aide d'ANT.

Écrivons une cible ANT viewDesignXMLpour afficher le JRXML. Alors, créons et sauvegardonsbuild.xmlsous le répertoire C: \ tools \ jasperreports-5.0.1 \ test (doit être placé dans le même répertoire où JRXML est placé). Voici le fichier 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>

Ensuite, ouvrons une invite de commande et allons dans le répertoire où build.xml est placé. Exécutez la commandeant(Comme le viewDesignXML est la cible par défaut). La sortie est la suivante -

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.

L'avertissement Log4j peut être ignoré, et à la suite de l'exécution ci-dessus, une fenêtre intitulée "JasperDesignViewer" s'ouvre, affichant notre aperçu du modèle de rapport.

Comme nous le voyons, seules les expressions de rapport permettant d'obtenir les données sont affichées, car JasperDesignViewer n'a pas accès à la source de données réelle ou aux paramètres du rapport. Terminez JasperDesignViewer en fermant la fenêtre ou en appuyant sur Ctrl-c dans la fenêtre de ligne de commande.