JasperReports - Designs

Die JRXML-Vorlagen (oder JRXML-Dateien) in JasperReport sind Standard-XML-Dateien mit der Erweiterung .jrxml. Alle JRXML-Dateien enthalten das Tag <jasperReport> als Stammelement. Dies wiederum enthält viele Unterelemente (alle sind optional). Das JasperReport-Framework kann verschiedene Arten von Datenquellen verarbeiten. In diesem Tutorial zeigen wir, wie Sie einen Basisbericht erstellen, indem Sie einfach eine Sammlung von Java-Datenobjekten (mithilfe von Java-Beans) an die JasperReport Engine übergeben. Der Abschlussbericht enthält eine Liste der Personen mit den Kategorien einschließlich ihrer Namen und Länder.

Die folgenden Schritte werden in diesem Kapitel behandelt, um zu beschreiben, wie ein JasperReport entworfen wird.

  • Erstellen einer JRXML-Berichtsvorlage und.
  • Vorschau der XML-Berichtsvorlage.

Erstellen einer JRXML-Berichtsvorlage

Erstellen Sie die JRXML-Datei jasper_report_template.jrxmlVerwenden Sie einen Texteditor und speichern Sie diese Datei in C: \ tools \ jasperreports-5.0.1 \ test gemäß unserer Umgebungskonfiguration.

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

Hier sind die Details der Hauptfelder in der obigen Berichtsvorlage -

  • <queryString> - Dies ist leer (da wir Daten über Java Beans übergeben). Enthält normalerweise die SQL-Anweisung, die das Berichtsergebnis abruft.

  • <Feldname> - Mit diesem Element werden Daten aus Datenquellen oder Abfragen in Berichtsvorlagen abgebildet. name wird im Berichtskörper wiederverwendet und unterscheidet zwischen Groß- und Kleinschreibung.

  • <fieldDescription> - Dieses Element ordnet den Feldnamen dem entsprechenden Element in der XML-Datei zu.

  • <staticText> - Definiert den statischen Text, der nicht von Datenquellen, Variablen, Parametern oder Berichtsausdrücken abhängt.

  • <textFieldExpression> - Definiert das Erscheinungsbild des Ergebnisfelds.

  • $ F {country} - Dies ist eine Variable, die den Wert des vordefinierten Ergebnisfelds im Tag <Feldname> enthält.

  • <Band> - Bänder enthalten die Daten, die im Bericht angezeigt werden.

Sobald das Berichtsdesign fertig ist, speichern Sie es im Verzeichnis C: \.

Vorschau der XML-Berichtsvorlage

In der JasperReports-JAR-Datei ist ein Dienstprogramm net.sf.jasperreports.view.JasperDesignViewer verfügbar, mit dem Sie eine Vorschau des Berichtsdesigns anzeigen können , ohne es kompilieren oder füllen zu müssen. Dieses Dienstprogramm ist eine eigenständige Java-Anwendung und kann daher mit ANT ausgeführt werden.

Schreiben wir ein ANT-Ziel viewDesignXMLum die JRXML anzuzeigen. Lassen Sie uns also erstellen und speichernbuild.xmlunter dem Verzeichnis C: \ tools \ jasperreports-5.0.1 \ test (sollte sich in demselben Verzeichnis befinden, in dem sich JRXML befindet). Hier ist die Datei 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>

Öffnen Sie als Nächstes eine Eingabeaufforderung und wechseln Sie in das Verzeichnis, in dem build.xml abgelegt ist. Führen Sie den Befehl ausant(Da viewDesignXML das Standardziel ist). Ausgabe ist wie folgt -

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.

Die Log4j-Warnung kann ignoriert werden. Als Ergebnis der obigen Ausführung wird ein Fenster mit der Bezeichnung "JasperDesignViewer" geöffnet, in dem unsere Vorschau der Berichtsvorlage angezeigt wird.

Wie wir sehen, werden nur Berichtsausdrücke zum Abrufen der Daten angezeigt, da JasperDesignViewer keinen Zugriff auf die tatsächlichen Datenquellen- oder Berichtsparameter hat. Beenden Sie den JasperDesignViewer, indem Sie das Fenster schließen oder Strg-C im Befehlszeilenfenster drücken.