Diagramme erstellen

Frühere Benutzer mussten sich auf Scriptlets verlassen, um die Diagrammdaten zu erfassen und das Diagramm mithilfe eines Bildelements in der Berichtsvorlage zu rendern. JasperReports macht es jetzt einfach, da es eine integrierte Unterstützung für Diagramme mit der neuen Diagrammkomponente bietet.

Bei Verwendung einer neuen Diagrammkomponente muss der Benutzer nur die visuellen Einstellungen anwenden und Ausdrücke definieren, die beim Erstellen des Diagrammdatensatzes helfen. JasperReports verwendet JFreeChart als zugrunde liegende Diagrammbibliothek. Bei der Konfiguration einer neuen Diagrammkomponente sind folgende drei Komponenten beteiligt:

  • Die gesamte Diagrammkomponente.

  • Der Diagrammdatensatz (der die gruppendatenbezogenen Einstellungen gruppiert).

  • Das Diagrammdiagramm (das visuelle Einstellungen gruppiert, die sich auf die Art und Weise beziehen, wie die Diagrammelemente gerendert werden).

JasperReports unterstützt derzeit die folgenden Diagrammtypen: Kreis, Kreis 3D, Balken, Balken 3D, XY-Balken, Stapelbalken, Stapelbalken 3D, Linie, XY-Linie, Bereich, XY-Bereich, Stapelbereich, Streuung, Blase, Zeitreihe, Hoch -Niedrig-Öffnen-Schließen, Kerzenhalter, Mehrfachachse, Messgerät, Thermometer und Gantt.

Diagrammeigenschaften

Diagramme sind normale Berichtselemente, daher teilen sie einige ihrer Eigenschaften mit allen anderen Berichtselementen. Es gibt ein JRXML-Element namens <chart>, wird verwendet, um alle Arten von Diagrammen zu erstellen. Dieses Element gruppiert spezielle diagrammspezifische Einstellungen, die für alle Diagrammtypen gelten.

Diagramm-Unterelemente

Die Unterelemente des <chart> -Elements sind -

  • <reportElement> - Dies sind anzeigbare Objekte wie statische Texte, Textfelder, Bilder, Linien und Rechtecke, die Sie in Ihre Berichtsvorlagenabschnitte einfügen.

  • <Box> - Dieses Element wird verwendet, um Diagramme mit einem Rand zu umgeben, der auf jeder Seite anpassbar ist.

  • <chartTitle>- Mit diesem Element wird der Titel des Diagramms platziert. Das Positionsattribut bestimmt die Titelposition des Diagramms im Bericht. Dieses Element hat Attribute -Position(Werte können oben , unten , links , rechts sein . Deafult-Wert ist oben ),color. <chartTitle> hat Schriftart und titleExpression als Unterelemente.

  • <chartSubtitle>- Mit diesem Element wird der Untertitel des Diagramms platziert. Dieses Element hat das Attribut -color. <chartSubtitle> hat Schriftart und Untertitelausdruck als Unterelemente.

  • <chartLegend>- Mit diesem Element kann das Element die schriftartenbezogenen Eigenschaften sowie die Textfarbe und die Hintergrundfarbe der Diagrammlegende steuern. Dieses Element hat Attribute -textColor und backgroundColor.

  • <anchorNameExpression> - Dieses Element erstellt das Ziel für den Anker.

  • <hyperlinkReferenceExpression> - Dieses Element enthält einen Berichtsausdruck, der den Namen der externen Ressource angibt (normalerweise eine URL).

  • <hyperlinkAnchorExpression> - Hyperlink verweist auf einen Anker in einer externen Ressource.

  • <hyperlinkPageExpression> - Der Hyperlink verweist auf eine Seite im aktuellen Bericht.

  • <hyperlinkTooltipExpression>- Dieses Element steuert den ToolTip des Hyperlinks. Der Typ des Ausdrucks sollte java.lang.String sein .

  • <hyperlinkParameter> - Wenn dieses Element vorhanden ist, wird abhängig von den Parameterwerten ein endgültiger Hyperlink generiert.

Diagrammattribute

Attribute im <chart> -Element, die für alle Diagrammtypen verfügbar sind, sind -

  • isShowLegend- Mit diesem Attribut wird festgelegt, ob eine Diagrammlegende im Bericht angezeigt wird. Werte können wahr oder falsch sein . Der Standardwert ist true .

  • evaluationTime- Legt fest, wann der Ausdruck des Diagramms ausgewertet wird. Die Werte können Jetzt , Bericht , Seite , Spalte , Gruppe , Band sein . Der Standardwert ist Jetzt .

  • evaluationGroup- Dieses Attribut bestimmt den Namen der Gruppe, die zur Auswertung der Diagrammausdrücke verwendet werden soll. Der Wert für dieses Attribut muss mit dem Namen der Gruppe übereinstimmen, die wir als Bewertungsgruppe für das Diagramm verwenden möchten.

  • hyperlinkType- Dieses Attribut kann einen beliebigen Textwert enthalten. Der Standardwert ist Keine . Dies bedeutet, dass weder die Textfelder noch die Bilder Hyperlinks darstellen, selbst wenn die speziellen Hyperlinkausdrücke vorhanden sind.

  • hyperlinkTarget- Mit diesem Attribut können Sie das Verhalten des angegebenen Links anpassen, wenn Sie im Viewer darauf klicken. Werte können Selbst oder Leer sein . Der Standardwert ist Self .

  • bookmarkLevel- Wenn dieses Attribut auf eine positive Ganzzahl gesetzt wird, werden Lesezeichen in den in PDF exportierten Berichten generiert. Der Standardwert ist 0 .

  • customizerClass- Dies ist der Name einer Klasse (optional), mit der das Diagramm angepasst werden kann. Der Wert für dieses Element muss eine Zeichenfolge sein, die den Namen einer Customizer-Klasse enthält.

Diagrammanpassung

Wie oben erwähnt, verwendet JasperReports JFreeChart als zugrunde liegende Diagrammbibliothek. JFreeChart enthält Funktionen, die von JasperReports direkt nicht unterstützt werden. Wir können diese Funktionen nutzen, indem wir eine Customizer-Klasse über das customizerClass- Attribut im <chart> -Element bereitstellen. Eine Customizer-Klasse ist nichts anderes als eine Implementierung der Schnittstelle net.sf.jasperreports.engine.JRChartCustomizer . Die einfachste Möglichkeit, diese Schnittstelle zu implementieren, besteht darin, die Klasse net.sf.jasperreports.engine.JRAbstractChartCustomizer zu erweitern und somit auf Parameter, Felder und Variablen zuzugreifen, um die Diagrammanpassung basierend auf Berichtsdaten flexibler anzupassen.

Diagrammdatensätze

Eine der gemeinsamen Eigenschaften aller Diagrammtypen ist <dataset> Element. Diagrammdatensätze helfen beim Zuordnen von Berichtsdaten und beim Abrufen von Diagrammdaten zur Laufzeit. Jeder Diagrammtyp enthält verschiedene Unterelemente, um die Ausdrücke des Diagramms zu definieren. Diese Ausdrücke definieren die Daten, die zum Generieren des Diagramms verwendet werden. Alle diese Unterelemente enthalten ein <dataset> -Element, das definiert, wann die Ausdrücke des Diagramms ausgewertet und zurückgesetzt werden.

In JasperReports stehen verschiedene Arten von Diagrammdatensätzen zur Verfügung, da jeder Diagrammtyp mit bestimmten Datensätzen funktioniert: Kreis, Kategorie, XY, Zeitreihen, Zeitraum, XYZ und Hoch-Niedrig. Jeder dieser Dataset-Typen implementiert die Schnittstelle net.sf.jasperreports.engine.JRChartDataset , die Diagramm-Datasets definiert. Alle Diagrammdatensätze werden auf dieselbe Weise initialisiert und inkrementiert. Sie unterscheiden sich jedoch nur in der Art der Daten oder Datenreihen, die sie abbilden.

Datensatz-Eigenschaften

Die folgende Tabelle fasst die Attribute des Elements <dataset> - zusammen.

Attribut Beschreibung Werte
resetType Dieses Attribut bestimmt, wann der Wert des Diagrammausdrucks zurückgesetzt werden soll. Keine, Bericht, Seite, Spalte, Gruppe. Standardwert istReport.
resetGroup Dieses Attribut bestimmt den Namen der Gruppe, bei der der Diagrammausdruckswert zurückgesetzt wird. Der Wert für dieses Attribut muss mit dem Namen einer Gruppe übereinstimmen, die in der JRXML-Berichtsvorlage deklariert ist.
incrementType Dieses Attribut bestimmt, wann der Wert des Diagrammausdrucks neu berechnet werden soll. Keine, Bericht, Seite, Spalte, Gruppe. Standardwert ist"None".
incrementGroup Dieses Attribut bestimmt den Namen der Gruppe, in der der Diagrammausdruck neu berechnet wird. Der Wert für dieses Attribut muss mit dem Namen einer Gruppe übereinstimmen, die in der JRXML-Berichtsvorlage deklariert ist.

In der folgenden Tabelle sind die Unterelemente des Elements <Datensatz> zusammengefasst.

Unterelement Beschreibung
<incrementWhenExpression> Die Art und Weise, wie ein Diagrammdatensatz inkrementiert wird, kann angepasst werden, indem unerwünschte Daten mithilfe dieses Unterelements herausgefiltert werden.
<datasetRun> Diese enthält Informationen, die zum Instanziieren eines Berichtsunterdatensatzes erforderlich sind.

Datensatztypen

Bestimmte Datensatztypen werden nachfolgend erläutert -

Torten-Datensatz

Ein Tortendatensatz ist durch die folgenden Ausdrücke gekennzeichnet:

  • <keyExpression> - repräsentiert die Kategorien, aus denen die Slices im Kreisdiagramm bestehen. Dieser Ausdruck kann jedes java.lang.Comparable-Objekt zurückgeben.

  • <valueExpression> - Erzeugt die Werte, die jeder Kategorie / jedem Schlüssel im Dataset entsprechen. Werte sind immer java.lang.Number-Objekte.

  • <labelExpression> - Wenn dieser Ausdruck fehlt, werden im Diagramm Standardbeschriftungen für jedes Slice im Kreisdiagramm angezeigt. Verwenden Sie diesen Ausdruck, der java.lang.String-Werte zurückgibt, um die Elementbeschriftungen für das Kreisdiagramm anzupassen.

  • <sectionHyperlink> - Legt Hyperlinks fest, die den Kreisabschnitten zugeordnet sind.

Kategoriedatensatz

Ein Kategoriedatensatz ist durch das Element <categorySeries> gekennzeichnet, das - enthält

  • <seriesExpression> - Gibt den Namen der Serie an. Dieser Ausdruck kann jedes java.lang.Comparable-Objekt zurückgeben.

  • <categoryExpression> - Gibt den Namen der Kategorie für jeden Wert innerhalb der durch den Serienausdruck angegebenen Reihe zurück. Kategorien sind java.lang.Comparable-Objekte.

  • <valueExpression> - Erzeugt die Werte, die jeder Kategorie im Dataset entsprechen. Werte sind immer java.lang.Number-Objekte.

  • <labelExpression> - Wenn dieser Ausdruck fehlt, werden im Diagramm Standardbezeichnungen für jedes Element im Diagramm angezeigt. Verwenden Sie diesen Ausdruck, der java.lang.String-Werte zurückgibt, um die Elementbezeichnungen für das Diagramm anzupassen.

  • <itemHyperlink> - Legt Hyperlinks fest, die Diagrammelementen zugeordnet sind.

XY-Datensatz

Ein XY-Datensatz ist durch das Element <xySeries> gekennzeichnet, das - enthält

  • <seriesExpression> - Gibt den Namen der Serie an. Dieser Ausdruck kann jedes java.lang.Comparable-Objekt zurückgeben.

  • <xValueExpression> - Gibt den Wert java.lang.Number zurück, der den X-Wert aus dem (x, y) -Paar darstellt, das der aktuellen Datenreihe hinzugefügt wird.

  • <yValueExpression> - Gibt den Wert java.lang.Number zurück, der den Y-Wert aus dem (x, y) -Paar darstellt, das der aktuellen Datenreihe hinzugefügt wird.

  • <labelExpression> - Wenn dieser Ausdruck fehlt, werden im Diagramm Standardbezeichnungen für jedes Element im Diagramm angezeigt. Verwenden Sie diesen Ausdruck, der java.lang.String-Werte zurückgibt, um die Elementbezeichnungen für das Diagramm anzupassen.

  • <itemHyperlink> - Legt Hyperlinks fest, die den Diagrammelementen zugeordnet sind.

XYZ-Datensatz

Ein XYZ-Dataset ist durch das Element <xyzSeries> gekennzeichnet, das - enthält

  • <seriesExpression> - Gibt den Namen der Serie an. Dieser Ausdruck kann jedes java.lang.Comparable-Objekt zurückgeben.

  • <xValueExpression> - Gibt den Wert java.lang.Number zurück, der den X-Wert aus dem Element (x, y, z) darstellt, das der aktuellen Datenreihe hinzugefügt wird.

  • <yValueExpression> - Gibt den Wert java.lang.Number zurück, der den Y-Wert aus dem Element (x, y, z) darstellt, das der aktuellen Datenreihe hinzugefügt wird.

  • <zValueExpression> - Gibt den Wert java.lang.Number zurück, der den Z-Wert aus dem Element (x, y, z) darstellt, das der aktuellen Datenreihe hinzugefügt wird.

  • <labelExpression> - Wenn dieser Ausdruck fehlt, werden im Diagramm Standardbezeichnungen für jedes Element im Diagramm angezeigt. Verwenden Sie diesen Ausdruck, der java.lang.String-Werte zurückgibt, um die Elementbezeichnungen für das Diagramm anzupassen.

  • <itemHyperlink> - Legt Hyperlinks fest, die den Diagrammelementen zugeordnet sind.

Zeitreihendatensatz

Ein Zeitreihendatensatz ist durch das Attribut timePeriod und das Element <timeSeries> gekennzeichnet. Das Attribut timePeriod gibt den Typ der Datenreihe innerhalb des Datasets an. Zeitreihen können numerische Werte enthalten, die Tagen, Monaten, Jahren oder anderen vordefinierten Zeiträumen zugeordnet sind. Mögliche Werte sind: Jahr, Quartal, Monat, Woche, Tag - dies ist der Standardwert, Stunde, Minute, Sekunde, Millisekunde.

Das <timeSeries> -Element enthält -

  • <seriesExpression> - Gibt den Namen der Serie an. Dieser Ausdruck kann jedes java.lang.Comparable-Objekt zurückgeben.

  • <timePeriodExpression> - gibt einen java.util.Date-Wert zurück, aus dem die Engine den entsprechenden Zeitraum in Abhängigkeit von dem für das oben erwähnte timePeriod-Attribut festgelegten Wert extrahiert.

  • <valueExpression> - Gibt den Wert java.lang.Number zurück, der beim Erhöhen der aktuellen Serie des Datasets dem entsprechenden Zeitraumwert zugeordnet werden soll.

  • <labelExpression> - Wenn dieser Ausdruck fehlt, werden im Diagramm Standardbezeichnungen für jedes Element im Diagramm angezeigt. Verwenden Sie diesen Ausdruck, der java.lang.String-Werte zurückgibt, um die Elementbezeichnungen für das Diagramm anzupassen.

  • <itemHyperlink> - Legt Hyperlinks fest, die den Diagrammelementen zugeordnet sind.

Zeitraum Datensatz

Ein Zeitraumdatensatz ist durch das Element <timePeriodSeries> gekennzeichnet, das - enthält

  • <seriesExpression> - Gibt den Namen der Serie an. Dieser Ausdruck kann jedes java.lang.Comparable-Objekt zurückgeben.

  • <startDateExpression> - Gibt den Beginn des Datumsintervalls an, dem der numerische Wert zugeordnet wird, wenn er zur Zeitreihenreihe hinzugefügt wird.

  • <endDateExpression> - Gibt das Ende des Datumsintervalls an, dem der numerische Wert zugeordnet wird, wenn er zur Zeitreihenreihe hinzugefügt wird.

  • <valueExpression> - Gibt den Wert java.lang.Number zurück, der dem aktuellen Datumsintervall zugeordnet werden soll, das durch die Ausdrücke für Startdatum und Enddatum angegeben wird.

  • <labelExpression> - Wenn dieser Ausdruck fehlt, werden im Diagramm Standardbezeichnungen für jedes Element im Diagramm angezeigt. Verwenden Sie diesen Ausdruck, der java.lang.String-Werte zurückgibt, um die Elementbezeichnungen für das Diagramm anzupassen.

  • <itemHyperlink> - Legt Hyperlinks fest, die den Diagrammelementen zugeordnet sind.

High Low Dataset

Ein High-Low-Datensatz ist durch die folgenden Ausdrücke gekennzeichnet:

  • <seriesExpression> - Derzeit wird nur eine Serie in einem High-Low- oder Candlestick-Diagramm unterstützt. Diese einzelne Serie muss jedoch durch einen java.lang.Comparable-Wert identifiziert werden, der von diesem Ausdruck zurückgegeben wird, und sie muss auch als Serienname in der Legende des Diagramms verwendet werden.

  • <dateExpression> - Gibt das Datum zurück, auf das sich das aktuelle Element (High, Low, Open, Close, Volume) bezieht.

  • <highExpression> - gibt einen java.lang.Number-Wert zurück, der Teil des Datenelements ist, das der Serie hinzugefügt wird, wenn das Dataset inkrementiert wird.

  • <lowExpression> - Gibt einen java.lang.Number-Wert zurück, der Teil des Datenelements ist, das der Serie hinzugefügt wird, wenn das Dataset inkrementiert wird.

  • <openExpression> - Gibt einen java.lang.Number-Wert zurück, der Teil des Datenelements ist, das der Serie hinzugefügt wird, wenn das Dataset inkrementiert wird.

  • <closeExpression> - gibt einen java.lang.Number-Wert zurück, der Teil des Datenelements ist, das der Serie hinzugefügt wird, wenn das Dataset inkrementiert wird.

  • <volumeExpression> - Ein numerischer Ausdruck, der den für das aktuelle Datenelement zu verwendenden Volume-Wert zurückgibt. Es wird nur für Candlestick-Diagramme verwendet.

  • <itemHyperlink> - Legt Hyperlinks fest, die den Diagrammelementen zugeordnet sind.

Wertedatensatz

Dies ist eine spezielle Implementierung eines Diagrammdatensatzes, die einen einzelnen Wert enthält und zum Rendern von Mess- und Thermometerdiagrammen verwendet wird. Der Wert wird mit dem Ausdruck <valueExpression> erfasst.

Diagrammdiagramme

Ein weiteres gemeinsames JRXML-Element für alle Diagrammtypen ist das <plot> Element. Auf diese Weise können wir verschiedene Merkmale des Diagramms wie Ausrichtung und Hintergrundfarbe definieren. Die Diagramme unterscheiden sich je nach Diagrammtyp.

Plot-Attribut

Die folgende Tabelle fasst die Attribute des <plot> -Elements zusammen -

Attribut Beschreibung Werte
Hintergrundfarbe Dieses Attribut definiert die Hintergrundfarbe des Diagramms. Jeder sechsstellige Hexadezimalwert ist ein gültiger Wert für dieses Attribut. Vor dem Hexadezimalwert muss ein # stehen.
Orientierung Dieses Attribut definiert die Ausrichtung des Diagramms. Horizontal, vertikal Der Standardwert ist "Vertikal".
HintergrundAlpha Dieses Attribut definiert die Transparenz der Hintergrundfarbe des Diagramms. Die gültigen Werte für dieses Attribut enthalten eine beliebige Dezimalzahl zwischen 0 und 1 einschließlich. Je höher die Zahl, desto weniger transparent ist der Hintergrund. Der Standardwert ist "1".
VordergrundAlpha Dieses Attribut definiert die Transparenz der Vordergrundfarben des Diagramms. Die gültigen Werte für dieses Attribut enthalten eine beliebige Dezimalzahl zwischen 0 und 1 einschließlich. Je höher die Zahl, desto weniger transparent ist der Hintergrund. Der Standardwert ist "1".
labelRotation Dieses Attribut ermöglicht das Drehen von Textbeschriftungen auf der x-Achse im oder gegen den Uhrzeigersinn. Dieses Attribut gilt nur für Diagramme, für die die x-Achse nicht numerisch ist oder keine Daten anzeigt. Der Standardwert ist "0.0".

Das <plot> -Element hat ein Unterelement <seriesColor>, dessen Attribute sind: seriesOrder und color . Dieses Element passt Farben für Serien und deren Position innerhalb der Farbsequenz an.

Spezifische Einstellungen für Diagrammdiagramme

  • piePlot - Es hat keine spezifischen Einstellungen

  • pie3DPlot- Enthält das Attribut depthFactor , einen numerischen Wert zwischen 0 und 1, der die Tiefe des Kreises als Prozentsatz der Höhe des Plotbereichs darstellt .

  • barPlot - Sie können Tick-Labels, Tick-Marks oder Item-Labels ein- oder ausblenden und stellen Einstellungen für beide Achsen bereit.

  • bar3DPlot - Bietet dieselben Einstellungen wie der barPlot und generiert mithilfe der Attribute xOffset und yOffset einen 3D-Effekt.

  • linePlot - Sie können Linien ein- oder ausblenden, die Elementpunkte verbinden, Formen anzeigen oder ausblenden, die Elementpunkten zugeordnet sind, und Einstellungen für beide Achsen bereitstellen.

  • scatterPlot - Ähnlich wie beim linePlot können Linien, die Elementpunkte verbinden, angezeigt oder ausgeblendet, Formen angezeigt oder ausgeblendet werden, die Elementpunkten zugeordnet sind, und es werden Einstellungen für beide Achsen bereitgestellt.

  • areaPlot - Bietet Einstellungen für beide Achsen.

  • bubblePlot - Sie können die Blasenabmessungen durch Festlegen des Attributs scaleType festlegen und Einstellungen für beide Achsen bereitstellen.

  • timeSeriesPlot - Sie können Linien ein- oder ausblenden, die Elementpunkte verbinden, Formen anzeigen oder ausblenden, die Elementpunkten zugeordnet sind, und Einstellungen für beide Achsen bereitstellen.

  • highLowPlot - Sie können offene Ticks ein- oder ausblenden, geschlossene Ticks ein- oder ausblenden und Einstellungen für beide Achsen vornehmen.

  • candlestickPlot - Man kann die Lautstärke ein- oder ausblenden und stellt Einstellungen für beide Achsen bereit.

  • meterPlot - Enthält spezifische Einstellungen für Zifferblattform, Skalierungswinkel, Maßeinheiten, Tickintervall, Zifferblattfarbe, Nadelfarbe, Tickfarbe, Wertanzeigeschriftart, Farb- und Formatmuster, Datenbereich und Messintervalle.

  • thermometerPlot - Enthält spezifische Einstellungen für den Werteort, die Quecksilberfarbe, die Wertlinien zum Ein- und Ausblenden, die Schriftart der Wertanzeige, das Farb- und Formatmuster, den Datenbereich, den unteren Bereich, den mittleren Bereich und den hohen Bereich.

  • multiAxisChart - Enthält spezifische Einstellungen für die im Diagramm enthaltene Achse.

Arten von Diagrammen

JasperReports bietet integrierte Unterstützung für verschiedene Diagrammtypen. Sie sind wie folgt aufgeführt -

  • pieChart - Eine Kombination aus einem Kreisdatensatz und einem Kreisdiagramm.

  • pie3DChart - Gruppiert einen Pie-Datensatz und ein Pie-3D-Diagramm.

  • barChart - Eine grundlegende Kombination aus einem Kategoriedatensatz und einem Balkendiagramm.

  • bar3DChart - Umschließt einen Kategoriedatensatz und ein 3D-Balkendiagramm.

  • xyBarChart - Unterstützt Zeitperiodendatensätze, Zeitreihendatensätze und XY-Datensätze und verwendet ein Balkendiagramm zum Rendern der Achse und der Elemente.

  • stackedBarChart - Verwendet Daten aus einem Kategoriedatensatz und rendert dessen Inhalt mithilfe eines Balkendiagramms.

  • stackedBar3DChart - Verwendet Daten aus einem Kategoriedatensatz und rendert dessen Inhalt mithilfe eines 3D-Balkendiagramms.

  • lineChart - Gruppiert einen Kategoriedatensatz und ein Liniendiagramm.

  • xyLineChart - Gruppiert einen XY-Datensatz und ein Liniendiagramm.

  • areaChart - Elemente aus einem Kategoriedatensatz werden mithilfe eines Flächendiagramms gerendert.

  • stackedAreaChart - Elemente aus einem Kategoriedatensatz werden mithilfe eines Flächendiagramms gerendert.

  • xyAreaChart - Verwendet Daten aus einem XY-Datensatz und rendert sie über ein Flächendiagramm.

  • scatterChart - Umschließt einen XY-Datensatz mit einem Streudiagramm.

  • bubbleChart - Kombiniert einen XYZ-Datensatz mit einem Bubble-Plot.

  • timeSeriesChart - Gruppiert einen Zeitreihendatensatz und ein Zeitreihendiagramm.

  • highLowChart - Eine Kombination aus einem High-Low-Datensatz und einem High-Low-Diagramm.

  • candlestickChart - Verwendet Daten aus einem High-Low-Datensatz, jedoch mit einem speziellen Candlestick-Diagramm.

  • meterChart - Zeigt einen einzelnen Wert aus einem Wertedatensatz auf einem Zifferblatt an, wobei Renderoptionen aus einem Meter-Diagramm verwendet werden.

  • thermometerChart - Zeigt den Einzelwert in einem Wertedatensatz mithilfe von Renderoptionen aus einem Thermometerdiagramm an.

  • multiAxisChart - Enthält mehrere Bereichsachsen, die sich alle eine gemeinsame Domänenachse teilen.

Beispiel

Um die Diagramme zu demonstrieren, schreiben wir eine neue Berichtsvorlage (jasper_report_template.jrxml). Hier fügen wir das <hinzubarChart> Element zum Abschnitt <pageHeader> und <pieChart> zum Abschnitt <Zusammenfassung>. Wir würden die für jedes Thema erzielten Noten in Diagrammen anzeigen. Speichern Sie es im VerzeichnisC:\tools\jasperreports-5.0.1\test. Der Inhalt der Datei ist wie folgt:

<?xml version = "1.0" encoding = "UTF-8"?>

<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" pageWidth = "595" pageHeight = "860"
   columnWidth = "515" leftMargin = "40" rightMargin = "40"
   topMargin = "50" bottomMargin = "50">

   <field name = "subjectName" class = "java.lang.String"/>
   <field name = "marks" class = "java.lang.Integer"/>
   
   <variable name = "countNumber" class = "java.lang.Integer" calculation = "Count">
      <variableExpression>
         <![CDATA[Boolean.TRUE]]>
      </variableExpression>
   </variable>
   
   <background>
      <band splitType = "Stretch"/>
   </background>
   
   <title>
      <band height = "79" splitType = "Stretch"/>
   </title>
   
   <pageHeader>
      <band height = "200">
    
         <barChart>
            <chart evaluationTime = "Report">
               <reportElement x = "0" y = "0" width = "555" height = "200"/>
            
               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Bar Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>
      
            <categoryDataset>
               <dataset incrementType = "None"/>
            
               <categorySeries>
                  <seriesExpression>
                     <![CDATA[$F{subjectName}]]>
                  </seriesExpression>
            
                  <categoryExpression>
                     <![CDATA[$F{subjectName}]]>
                  </categoryExpression>
            
                  <valueExpression>
                     <![CDATA[$F{marks}]]>
                  </valueExpression>

               </categorySeries>
            </categoryDataset>
      
            <barPlot isShowTickMarks = "false">
               <plot/>
            </barPlot>
         </barChart>
      
      </band>
   </pageHeader>
   
   <columnHeader>
      <band height = "20" splitType = "Stretch"/>
   </columnHeader>
   
   <detail>
      <band height = "20" splitType = "Stretch"/>
   </detail>
   
   <columnFooter>
      <band height = "20" splitType = "Stretch"/>
   </columnFooter>
   
   <pageFooter>
      <band height = "20" splitType = "Stretch"/>
   </pageFooter>
   
   <summary>
      <band height = "400" splitType = "Stretch">
      
         <pieChart>
            <chart evaluationTime = "Report">
               <reportElement x = "135" y = "0" width = "270" height = "300"/>
            
               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Pie Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>
         
            <pieDataset>
               <dataset incrementType = "None"/>
               
               <keyExpression>
                  <![CDATA[$F{subjectName}]]>
               </keyExpression>
            
               <valueExpression>
                  <![CDATA[$F{marks}]]>
               </valueExpression>
            </pieDataset>
            
            <piePlot>
               <plot/>
               <itemLabel/>
            </piePlot>
         </pieChart>
      
      </band>
   </summary>
	
</jasperReport>

Die Details der obigen Datei sind wie folgt:

  • Das JRXML-Element, das zum Erstellen eines Balkendiagramms verwendet wird, ist </ barChart> im <pageHeader>. Es enthält ein </ chart> -Unterelement, das ein <reportElement> -Unterelement enthält, das die Abmessungen und die Position des Diagramms definiert.

  • Das <dataset> -Element in einem Balkendiagramm muss zwischen den JRXML-Elementen <categoryDataset> und </ categoryDataset> eingeschlossen sein.

  • <categoryDataset> muss ein <categorySeries> -Element enthalten. Dieses Element definiert, welches Datenelement die Balken darstellen (in diesem Beispiel Betreffnamen).

  • <categoryDataset> muss auch ein Element enthalten, das definiert, wie die Daten zum Vergleich in Kategorien unterteilt werden. Hier werden Daten durch Betreffnamen getrennt.

  • Das <valueExpression> -Element definiert, mit welchem ​​Ausdruck der Wert jedes Balkens im Diagramm bestimmt wird. Hier verwenden wir "Marken".

  • Für das Kreisdiagramm haben wir das Element <pieChart> im Abschnitt <summary> verwendet. Es enthält ein </ chart> -Unterelement.

  • Das Unterelement enthält einen Berichtsausdruck, der angibt, was als Schlüssel im Diagramm verwendet werden soll. Hier haben wir subjectName verwendet.

  • Das Unterelement enthält einen Ausdruck, mit dem der Wert für den Schlüssel berechnet wird. Hier haben wir Marken verwendet.

Die Java-Codes für das Ausfüllen von Berichten bleiben unverändert. Der Inhalt der DateiC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\JasperReportFill.java sind wie unten angegeben -

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName = 
         "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";

      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource = new 
         JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();

      try {
         JasperFillManager.fillReportToFile( sourceFileName,
            parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

Da wir die für jedes Thema erzielten Noten anzeigen würden, muss POJO geändert werden. Die DateiC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBean.java Inhalt sind wie unten angegeben -

package com.tutorialspoint;

public class DataBean {
   private String subjectName;
   private Integer marks;

   public String getSubjectName() {
      return subjectName;
   }

   public void setSubjectName(String subjectName) {
      this.subjectName = subjectName;
   }

   public Integer getMarks() {
      return marks;
   }

   public void setMarks(Integer marks) {
      this.marks = marks;
   }

}

Sogar der Inhalt der Datei C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBeanList.java müssen wie unten angegeben aktualisiert werden -

package com.tutorialspoint;

import java.util.ArrayList;

public class DataBeanList {
   public ArrayList<DataBean> getDataBeanList() {
      ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();

      dataBeanList.add(produce("English", 58));
      dataBeanList.add(produce("SocialStudies", 68));
      dataBeanList.add(produce("Maths", 38));
      dataBeanList.add(produce("Hindi", 88));
      dataBeanList.add(produce("Scince", 78));
      
      return dataBeanList;
   }

   /*
    * This method returns a DataBean object, with subjectName ,
    * and marks set in it.
    */
   private DataBean produce(String subjectName, Integer marks) {
      DataBean dataBean = new DataBean();

      dataBean.setSubjectName(subjectName);
      dataBean.setMarks(marks);

      return dataBean;
   }
}

Berichterstellung

Als nächstes kompilieren wir die obigen Dateien und führen sie mit unserem regulären ANT-Erstellungsprozess aus. Der Inhalt der Datei build.xml (gespeichert im Verzeichnis C: \ tools \ jasperreports-5.0.1 \ test) ist wie folgt.

Die Importdatei - baseBuild.xml wird aus dem Kapitel Umgebungs-Setup übernommen und sollte im selben Verzeichnis wie die build.xml abgelegt werden.

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml" />
   
   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer to preview the 
      report stored in the .JRprint file.">
      
      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint" />
         <classpath refid = "classpath" />
      </java>
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
		
      <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
			
         <classpath refid = "classpath" />
      </jrc>
   </target>

</project>

Öffnen Sie als Nächstes das Befehlszeilenfenster und wechseln Sie in das Verzeichnis, in dem build.xml abgelegt ist. Führen Sie abschließend den Befehl ausant -Dmain-class=com.tutorialspoint.JasperReportFill (viewFullReport ist das Standardziel) wie folgt:

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

clean-sample:
   [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint

compile:
   [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
   [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
   warning: 'includeantruntime' was not set, defaulting to bu
   [javac] Compiling 3 source files to C:\tools\jasperreports-5.0.1\test\classes

compilereportdesing:
   [jrc] Compiling 1 report design files.
   [jrc] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
   [jrc] log4j:WARN Please initialize the log4j system properly.
   [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig 
      for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.tutorialspoint.JasperReportFill
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

viewFillReport:
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 19 minutes 45 seconds

Als Ergebnis der obigen Kompilierung wird ein JasperViewer-Fenster wie im folgenden Bildschirm geöffnet -

Hier sehen wir, dass das Balkendiagramm im Pageheader und das Kreisdiagramm in den Zusammenfassungsabschnitten erstellt werden.