JasperReport-Designdatei erstellen

Die JasperReport-Designdatei gibt das Layout und die Darstellung des Berichts an. Falls Sie keine funktionsfähige Designdatei (mit der Erweiterung '.jasper') importieren, müssen Sie eine solche Datei erstellen oder eine Datei ändern.

Detailliertere Informationen als in diesem Abschnitt finden Sie auf der folgenden Webseite:

http://jasperforge.org

Sie können als Quelle eine Datei mit der Erweiterung '.xml' auswählen; dies kann jedoch die Kompilierung verlangsamen. JasperReports funktioniert am besten bei Dateien mit der Erweiterung '.jrxml'.

Führen Sie folgende Schritte aus, um ein Gestaltungsdokument zu einem Paket hinzuzufügen:
  1. Erstellen Sie ein Gestaltungsdokument auf eine der folgenden Arten:
    • Verwenden Sie das JasperReports-Entwurfstool eines Fremdherstellers (wie JasperAssistant oder iReport). Stellen Sie sicher, dass die von Ihnen erstellte Datei die Erweiterung '.jrxml' hat.
    • Schreiben Sie mithilfe eines Texteditors JasperReports-XML-Quelleninformationen in eine neue Textdatei, die als Datei mit der Erweiterung '.jrxml' gespeichert wird.
  2. Platzieren Sie das XML-Gestaltungsdokument in das EGL-Paket, in dem sich auch Ihre Berichtstreiberdatei und der optionale EGL-Berichtshandler befinden.
  3. Passen Sie die XML-Quellendatei an, sodass sie folgende Datenquellen verwendet:
    • Wenn Sie eine recht einfache, klare Datenbankabfrage haben, erstellen Sie einen Bericht mit dem Typ DataSource.databaseConnection. Beziehen Sie Ihre SQL-Abfrage in die Quelle der XML-Entwurfsdatei ein. Der EGL-Berichtstreiber übergibt Ihre Verbindungsinformationen an JasperReports.
    • Wenn Sie komplexe Datenbankoperationen ausführen oder Ihre SQL-Anweisung dynamisch erstellen müssen, erstellen Sie einen Bericht mit dem Typ DataSource.sqlStatement. Der EGL-Berichtstreiber bezieht Ihre SQL-Abfrage ein und übergibt die Ergebnismenge an JasperReports.
    • Wenn Ihre Daten aus einer anderen Quelle als einer Datenbank stammen, erstellen Sie einen Bericht mit dem Typ DataSource.reportData. Der EGL-Berichtstreiber übergibt an JasperReports vollständige Berichtsdaten; es sind keine Verbindungsinformationen notwendig.
  4. Kompilieren Sie die Quellendatei.

Beispiel für eine Berichtsdesigndatei:

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

<jasperReport name="simpleReport">

    <field name="CUSTOMER_ID" class="java.lang.String" />
    <field name="FIRST_NAME" class="java.lang.String" />
    <field name="LAST_NAME" class="java.lang.String" />
    <field name="PHONE" class="java.lang.String" />
    
    <pageHeader>
    
        <band height="30">
            <staticText>
                <reportElement x="0" y="0" width="70" height="24" />
                <text>
                    <![CDATA[Customer ID: ]]>
                </text>
            </staticText>
            <staticText>
                <reportElement x="140" y="0" width="70" height="24" />
                <text>
                    <![CDATA[First name: ]]>
                </text>
            </staticText>
            <staticText>
                <reportElement x="280" y="0" width="70" height="24" />
                <text>
                    <![CDATA[Last name: ]]>
                </text>
            </staticText>
            <staticText>
                <reportElement x="420" y="0" width="70" height="24" />
                <text>
                    <![CDATA[Phone: ]]>
                </text>
            </staticText>
        </band>
        
    </pageHeader>
    
    <detail>
    
        <band height="30">
            <textField>
                <reportElement x="0" y="0" width="70" height="24" />
                <textFieldExpression>
                    <![CDATA[$F{CUSTOMER_ID}]]>
                </textFieldExpression>
            </textField>
            <textField>
                <reportElement x="140" y="0" width="70" height="24" />
                <textFieldExpression>
                    <![CDATA[$F{FIRST_NAME}]]>
                </textFieldExpression>
            </textField>
            <textField>
                <reportElement x="280" y="0" width="70" height="24" />
                <textFieldExpression>
                    <![CDATA[$F{LAST_NAME}]]>
                </textFieldExpression>
            </textField>
            
            <textField>
                <reportElement x="420" y="0" width="70" height="24" />
                <textFieldExpression>
                    <![CDATA[$F{PHONE}]]>
                </textFieldExpression>
            </textField>
        </band>
        
    </detail>
    
</jasperReport>

Mit diesem Beispiel für eine Berichtsdesigndatei werden vier Spalten mit Informationen gedruckt: eine ID-Nummer (Customer ID), ein Vorname (First name), ein Nachname (Last name) und eine Telefonnummer (Phone). Mit dem Abschnitt <pageHeader> werden Spaltenüberschriften gedruckt. Mit dem Abschnitt <detail> werden auf Basis der Daten, die vom Berichtstreiberprogramm bereitgestellt werden, Zeilendaten gedruckt.

Die folgenden Abschnitte bieten Spezifikationen für die unterschiedlichen Typen von XML-Quellendateien. Diese Informationen decken sehr einfache Fälle ab; komplexere Beispiele finden Sie auf der zuvor genannten JasperReports-Website oder in der Dokumentation zu Ihrem Entwurfstool (wenn Sie eines verwenden).

EGL-Quellendateien mit dem Typ 'DataSource.databaseConnection'

Beziehen Sie in Ihre EGL-Quellendatei Verbindungsinformationen ein und beziehen Sie Ihre SQL-Abfrage in die Quelle der XML-Designdatei ein. Hier finden Sie die Syntax für einen sehr einfachen Fall:
<queryString><![CDATA[SELECT * FROM Tabellenname]]></queryString> 
Tabellenname
Name einer Tabelle in Ihrer Datenbank
Definieren Sie die Felder (die an Spalten in der SQL-Ergebnismenge gebunden sind), die Sie verwenden wollen:
<field name="Feldname" class="java.lang.Klassentyp"></field>
Feldname
Ein Spaltenname in der Ergebnismenge der Abfrage in Ihrer Designdatei. Die Feldnamen müssen den Java™-Konventionen für Variablennamen entsprechen. Sie können in Ihrer SQL-Anweisung Aliasnamen für Spaltennamen verwenden, um doppelte Namen, ungültige Zeichen (wie ".") oder andere Konflikte zu bearbeiten.
Klassentyp
Eine java.lang-Klasse, wie 'Integer' (Ganzzahl) oder 'String' (Zeichenfolge), die den Datentyp angibt, auf den sich Feldname bezieht.
Platzieren Sie die Felder im Bericht mithilfe eines TextFieldExpression-Tags:
<textFieldExpression class="java.lang.Klassentyp">
<![CDATA[$F{Feldname}]]>
</textFieldExpression>

EGL-Quellendateien mit dem Typ 'DataSource.sqlStatement'

Platzieren Sie Ihre SQL-Anweisung in die EGL-Berichtstreiberdatei. Sie können Ihre Verbindung im Berichtstreiber explizit angeben oder Sie verwenden die Standardverbindung in Ihrem Erstellungsdeskriptor. Definieren Sie die Felder, die Sie im Bericht drucken wollen, in der XML-Designdatei. Die Feldnamen beziehen sich auf Spaltennamen in der Ergebnismenge Ihrer SQL-Anweisung:
<field name="Feldname" class="java.lang.Klassentyp"></field>
Feldname
Ein Spaltenname in der Ergebnismenge, die von der Abfrage in Ihrem EGL-Berichtstreiber erstellt wurde. Die Feldnamen müssen den Java-Konventionen für Variablennamen entsprechen. Sie können in Ihrer SQL-Anweisung Aliasnamen für die Spaltennamen verwenden, falls erforderlich.
Klassentyp
Eine java.lang-Klasse wie 'Integer' (Ganzzahl) oder 'String' (Zeichenfolge), die den Datentyp angibt, auf den sich Feldname bezieht.
Platzieren Sie die Felder im Bericht mithilfe eines TextFieldExpression-Tags:
<textFieldExpression class="java.lang.Klassentyp">
<![CDATA[$F{Feldname}]]>
</textFieldExpression>

EGL-Quellendateien mit dem Typ 'DataSource.reportData'

In dieser Instanz verwenden Sie keine Datenbank, weshalb Sie keine Verbindungs- oder SQL-Anweisung benötigen, weder in Ihrer XML-Quelle noch im EGL-Berichtstreiber. Definieren Sie stattdessen die Felder, die Sie verwenden wollen, in den Datensätzen, die Sie im EGL-Berichtstreiber erstellen:
<field name="Feldname" class="java.lang.Klassentyp"></field>
Feldname
Der Name eines Felds, den Sie genau so in der EGL-Quellendatei angeben.
Klassentyp
Eine java.lang-Klasse wie 'Integer' (Ganzzahl) oder 'String' (Zeichenfolge), die den Datentyp angibt, auf den sich Feldname bezieht.
Platzieren Sie die Felder im Bericht mithilfe eines TextFieldExpression-Tags:
<textFieldExpression class="java.lang.Klassentyp">
<![CDATA[$F{Feldname}]]>
</textFieldExpression>

Quelle der XML-Designdatei kompilieren

EGL kompiliert automatisch alle Dateien mit der Erweiterung '.jrxml', die im Paketverzeichnis im EGL-Quellenordner gefunden werden, vorausgesetzt, folgende Bedingungen sind wahr:
  • Die '.jrxml'-Datei wurde geändert.
  • Die '.jrxml'-Datei weist keine Fehler auf.
  • Der Compiler 'javac' befindet sich in Ihrem Ausführungspfad.

EGL platziert die kompilierte '.jasper'-Datei in das Verzeichnis Java Resources\Paketname, das parallel zu EGLSource\Paketname vorhanden ist. Wenn Sie Ihren EGL-Berichtstreiber erfolgreich generieren, platziert das Produkt eine verknüpfte Kopie der '.jasper-Datei' in das parallele Verzeichnis bin\Paketname. Sie können die '.jasper'-Datei manuell erstellen und kopieren, wenn Sie Projekt > Build für alle... oder Projekt > Bereinigen auswählen.

Richtlinien für die gleichzeitige Erstellung eines XML-Gestaltungsdokuments und eines Berichtshandlers finden Sie in Mit JasperReports Berichte erstellen. Ein Beispiel, in dem gezeigt wird, wie ein XML-Gestaltungsdokument einen Datensatz für Berichtsdaten aus dem Berichtshandler abruft, finden Sie in Code zum Erstellen eines Berichts mit dem Typ 'JasperReport' schreiben.


Feedback