Berichte mit JasperReports leicht gemacht

Das Generieren von Berichten ist eine häufige, wenn auch nicht immer glamouröse Aufgabe für Programmierer. In der Vergangenheit war die Berichterstellung weitgehend die Domäne großer kommerzieller Produkte wie Crystal Reports. Heute bietet die Open-Source-Bibliothek zur Erstellung von JasperReports-Berichten Java-Entwicklern eine praktikable Alternative zu kommerzieller Software.

JasperReports bietet die erforderlichen Funktionen zum Generieren dynamischer Berichte, einschließlich Datenabruf mithilfe von JDBC (Java Database Connectivity) sowie Unterstützung für Parameter, Ausdrücke, Variablen und Gruppen. JasperReports enthält auch erweiterte Funktionen wie benutzerdefinierte Datenquellen, Scriptlets und Unterberichte. Alles in allem kombiniert JasperReports gute Funktionen, Reife, Community-Beteiligung und ist vor allem kostenlos.

Dieser Artikel startet die neue Open Source- Profilspalte von JavaWorld, die Java-basierten Open Source-Tools und -Komponenten gewidmet ist. Suchen Sie nach Artikeln, in denen das Echo-Webanwendungsframework und ObJectRelationalBridge, ein Objekt- / relationales Zuordnungstool, vorgestellt werden. Bitte senden Sie mir Ihre Vorschläge für zukünftige Artikel.

Hinweis: Die Dokumentation und der Code in diesem Artikel basieren auf JasperReports Version 0.3.3.

Berichtsgestaltung

In JasperReports entwerfen Sie Berichte mithilfe von XML-Berichtsvorlagen. Die folgende XML-Datei ist beispielsweise eine Vorlage für einen Bericht mit einem Titel, zwei Datenspalten und Seitenzahlen:

           $ P {Titel}                                                             

Der Anfang der Vorlage enthält alle an den Bericht übergebenen Parameter, die Abfrage, mit der die Daten für den Bericht abgerufen werden, und die im Bericht angezeigten Felder. Der Rest der Vorlage gliedert sich in sechs Berichtsabschnitte:

  • title
  • pageHeader
  • columnHeader
  • detail
  • columnFooter
  • pageFooter
  • summary

Jeder Berichtsabschnitt, der als Band bezeichnet wird, erhält eine height. Jedes Band kann mehrere staticTextund textFieldElemente enthalten, denen eine Position, Größe und ein Wert zugewiesen werden. Berichtsparameter, Felder und Variablen verwenden verwiesen P${name}, F${name}und V${name}, respectively.

In den folgenden Zeilen im Seitenfußbereich wird beispielsweise eine Zeile textFieldmit der aktuellen Seitenzahl erstellt. Der Wert der Seitenzahl wird auf die Variable PAGE_NUMBERfestgelegt, die intern von JasperReports definiert wird und allen Berichten zur Verfügung steht:


  

Die obige Vorlage stellt einen einfachen, aber funktionalen Bericht dar. Eine ausführliche Beschreibung der JasperReports-XML-Vorlage würde den Rahmen dieses Artikels sprengen. In den Ressourcen sind jedoch zahlreiche Links zu Tools enthalten, mit denen Sie Ihre eigenen Berichtsvorlagen bearbeiten und erstellen können. Als nächstes sehen wir uns an, wie Sie JasperReports in Ihren Java-Anwendungen verwenden.

Verwenden Sie JasperReports

Um JasperReports verwenden zu können, müssen Sie zunächst verstehen, welche Objekte JasperReports verwendet, um den Berichtsprozess auf dem Weg vom Berichtsdesign zur Berichtserstellung darzustellen:

  • JasperDesign:Repräsentiert die Definition eines Berichts. In den meisten Fällen erstellen Sie eine JasperDesignVorlage aus einer XML-Berichtsvorlage. Sie können sie jedoch auch programmgesteuert erstellen.
  • JasperReport:Stellt eine kompilierte dar JasperDesign. Der Kompilierungsprozess überprüft das Berichtsdesign und kompiliert das Design zu einem JasperReportObjekt.
  • JasperPrint:Stellt einen generierten Bericht dar. Sie erstellen eine JasperPrintvon einem JasperReportdurch den Füllvorgang in dem ein Bericht mit Daten aus einer Datenquelle gefüllt wird.

Die Flexibilität der Jasper API können Sie laden JasperDesign, JasperReportund JasperPrintObjekte aus einer Datei oder einem Strom, und auch können Sie diese Objekte programmatisch erstellen. Sie können Berichte auf einem Drucker, einem Bild oder einer PDF-Datei drucken. Die JasperReports-Bibliothek enthält eine Fassadenklasse dori.jasper.engine.JasperManagermit Methoden zum Laden, Kompilieren, Füllen und Drucken von Berichten. Der folgende Code veranschaulicht Folgendes JasperManager:

// Laden Sie zuerst JasperDesign aus XML und kompilieren Sie es in JasperReport JasperDesign jasperDesign = JasperManager.loadXmlDesign ("BasicReport.xml"); JasperReport jasperReport = JasperManager.compileReport (jasperDesign); // Zweitens erstellen Sie eine Karte mit Parametern, die an den Bericht übergeben werden sollen. Kartenparameter = neue HashMap (); parameters.put ("ReportTitle", "Basic JasperReport"); parameters.put ("MaxSalary", neues Double (25000.00)); // Drittens eine Datenbankverbindung herstellen Connection conn = Database.getConnection (); // Viertens erstellen Sie JasperPrint mit der Methode fillReport (). JasperPrint jasperPrint = JasperManager.fillReport (jasperReport, parameters, conn); // Sie können JasperPrint verwenden, um PDF zu erstellen JasperManager.printReportToPdfFile (jasperPrint, "BasicReport.pdf"); // Oder um einen Bericht im JasperViewer JasperViewer anzuzeigen.viewReport (jasperPrint);

Das obige Codebeispiel zeigt, wie einige allgemeine Aufgaben mit JasperReports ausgeführt werden. In einer realen Anwendung ist es unpraktisch, JasperDesignjedes Mal, wenn Sie einen Bericht erstellen möchten, das zu laden und zu kompilieren . Da Berichtsentwürfe weitgehend statisch sind, würden Sie Ihre JasperDesignDateien in den meisten Fällen vorkompilieren , um die Geschwindigkeit zu erhöhen. Sie können die Geschwindigkeit eines großen Berichts auch erhöhen, indem Sie JasperPrintObjekte im Rahmen eines nächtlichen Stapelprozesses generieren und speichern .

Das ist alles, was Sie brauchen, um loszulegen. Laden Sie JasperReports herunter und Sie sind in kürzester Zeit einsatzbereit.

Meldet den einfachen Weg

In diesem Artikel haben Sie erfahren, wie Open Source JasperReports Ihre Java-Berichtsanforderungen unterstützen kann. Wenn Sie eine Berichtsanwendung erstellen oder einer vorhandenen Anwendung Berichtsfunktionen hinzufügen möchten, lesen Sie JasperReports. Besuchen Sie die JasperReports-Homepage für weitere Informationen und laden Sie die neueste Version herunter.

Erik Swenson ist Berater und Gründer von Open Source Software Solutions. Swenson ist auf die Java-Entwicklung mit Open Source-Software und -Komponenten spezialisiert. Er entwickelte die Open Source-Projekte JasperEdit und OpenReports.

Erfahren Sie mehr über dieses Thema

  • Die JasperReports-Homepage finden Sie unter

    //jasperreports.sourceforge.net

  • Zu den Open Source-Tools für JasperReports gehören:
  • JasperEdit // sourceforge.net / projects / jasperedit
  • Berichtsentwurfstools für Eclipse // sourceforge.net / projects / jeez
  • Designer für Jasper // sourceforge.net / projects / jasperdesign
  • Open Source-Alternativen zu JasperReports umfassen:
  • JFreeReport // sourceforge.net / projects / jfreereport
  • DataVision // sourceforge.net / projects / datavision
  • Durchsuchen Sie den Abschnitt Java Development Tools im aktuellen Index von JavaWorld

    //www.javaworld.com/channel_content/jw-tools-index.shtml

  • Chat über die Java - Entwicklung in Javaworld‘ s Programmierung Theorie & Praxis Diskussion

    //forums.idg.net/[email protected]@.ee6b806

  • Melden Sie sich für den kostenlosen wöchentlichen Applied Java- E-Mail-Newsletter von JavaWorld an

    //www.idg.net/jw-subscribe

  • Unter .net finden Sie eine Fülle von IT-Artikeln aus unseren Schwesterpublikationen

Diese Geschichte "Berichte mit JasperReports leicht gemacht" wurde ursprünglich von JavaWorld veröffentlicht.