This page (revision-8) was last changed on 18-Oct-2017 06:27 by ThomasBayen 

This page was created on 23-Nov-2007 15:38 by ThomasBayen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
8 18-Oct-2017 06:27 14 KB ThomasBayen to previous veralteter Absatz angepasst
7 14-Oct-2017 22:22 13 KB ThomasBayen to previous | to last Absatz und Link zu neuer Seite über den JasperServer
6 17-Aug-2011 18:56 13 KB ThomasBayen to previous | to last Link zu einem Vergleichsartikel und Tagging
5 02-Jan-2011 13:32 13 KB ThomasBayen to previous | to last Verweis auf JodReports
4 07-Nov-2009 10:59 12 KB ThomasBayen to previous | to last Tagging
3 13-Nov-2008 01:16 12 KB ThomasBayen to previous | to last Einige Tips und Tricks gesammelt
2 21-Jan-2008 13:31 6 KB ThomasBayen to previous | to last Tagging
1 23-Nov-2007 15:38 6 KB ThomasBayen to last Meine ersten Erfahrungen mit JasperReports

Page References

Incoming links Outgoing links

Version management

Difference between version and

= JasperReports =

Jasper ist ein Reportgenerator in Java. Ein Reportgenerator nimmt Daten aus einer Datenquelle (z.B. einer SQL-Datenbank) und gibt diese z.B. als eine Liste aus. Diese Liste kann weitgehend gestaltet werden, Daten können dabei aggregiert werden und sogar Charts (also graphische Auswertungen der Daten in Form von Digrammen) können eingebunden werden. Nach eigenen Angaben ist JasperReports die meistgenutzte Opensource Report Engine in Java.



== Vergleich mit [EclipsePlugin.BIRT] ==

Im Gegensatz zu [EclipsePlugin.BIRT] arbeitet JasperReports mit festen Größen der Anzeigefelder und nicht mit dynamischen, HTML-ähnlichen Feldern. Das mag zwar nicht so modern sein, führt aber meistens zu Ergebnissen, die viel näher an dem liegen, was man wirklich gemeint hat. Die festen Größen erschweren es andererseits sicherlich, Reports automatisch zu generieren, aber das werde ich vielleicht später mal ausprobieren.

Auf den ersten Blick scheint JasperReports auch wesenlich schlanker zu sein. Das zeigt sich erstens an der Größe der benötigten Bibliotheken aber zweitens vor allem auch an der Geschwindigkeit: Mein erster Beispiel-Report benötigte auf meinem Laptop mit BIRT ca. 15 Sekunden, mit Jasper 4 Sekunden und vorkompiliert nur 1,5 Sekunden.

JasperReports ist weit stärker mit dem Desktop-Benutzer bzw. der Erzeugung von Ausdrucken im Hinterkopf entwickelt worden, während BIRT seine Stärke eher im Erzeugen von HTML-Reports hat. Hier hat BIRT auch Eigenschaften wie Reports, die beim Anklicken aufklappen oder mit anklickbaren Inhaltsverzeichnissen, die in Jasper nicht zu finden sind.



== Erste Schritte ==

=== Erstellung eines Report mit iReport ===

Als erstes sollte man die JasperReports-Webseite links liegen lassen, und sich iReport herunterladen und starten. Auf der iReport-Seite gibt es nun ein kleines "Getting Started"-Tutorial. Dieses enthält eigentlich auch nicht viel, weil sich der erste Report fast von ganz alleine erstellt. :-) Man kann den Report aus iReport heraus dann auch anzeigen bzw. in vielen verschiedenen Formaten (z.B. PDF) ausgeben und abspeichern.

Weitere Änderungen und Anpassungen gehen recht intuitiv mittels Drag & Drop sowie recht übersichtlichen Properties-Dialogen. Mein anfängliches Problem, daß die von mir per Hand positionierten Felder nie genau neben- oder untereinander standen, erledigte sich nach einem Blick in die Toolbar, wo man Felder auf alle Arten aneinander ausrichten kann. Alles in allem hatte ich ohne einen Blick in die Anleitung nach zwei Stunden einen recht komplexen Bericht mit Formatierungen, Variablen und geschachtelten Formeln (allerdings ohne Charts). Letzlich ist die Berichterstellung nicht schwieriger als mit BIRT, nur etwas anders. Man sollte sich von Anfang an überlegen, was man will, weil z.B. das nachträgliche Einfügen einer Spalte mehr Arbeit macht als in BIRT.

== Ausgabe des Reports im Programm ==

Auch das ist im Tutorial recht anschaulich erklärt. Im Grunde geht es aber so einfach, daß ich hier direkt ein Beispiel angebe, weil das mehr sagt als tausend Worte:

{{{
public static void executeReportJrxml(String name) throws JRException,
ClassNotFoundException, SQLException {
// Datenbank
Class.forName("org.hsqldb.jdbcDriver");
Connection conn = DriverManager.getConnection(
"jdbc:hsqldb:file:/home/tbayen/.Applikation/datenbank", "sa", "");
// compilierten Report erzeugen
InputStream strm = ReportDepotUebersicht.class.getClassLoader()
.getResourceAsStream(name + ".jrxml");
JasperReport report = JasperCompileManager.compileReport(strm);
// Parameter festlegen und den Report ausfüllen
JasperPrint printout = JasperFillManager.fillReport(report, null, conn);
// und ausgeben
JasperViewer.viewReport(printout);
}
}}}


== Tips und Tricks ==

Zwei Besonderheiten sind mir aufgefallen. Zum einen bedarf es eines besonderen Tricks, um einen Text der Art "Seite 3 von 5" auf einen Report zu schreiben. Zum anderen störte mich am Anfang, daß man in Ausdrücken Werte in Java-Grundtypen immer in Java-Objekte wandeln musste. Beide Probleme sind in der FAQ auf der Webseite beschrieben. Auch das spricht für die Qualität der Dokumentation.

=== Integration in die EclipseIDE ===

Obwohl in unten genanntem Link steht, daß es eine Eclipse-Integration für iReport geben sollte, konnte ich diese nicht finden. Es gobt jedoch entsprechende Plugins von anderen Anbietern. Da iReport mir sehr gut gefallen hat und von den JasperReport-Machern offiziell mitgepflegt wird, habe ich mir die Alternativen jedoch nicht angeschaut.

Man kann in Eclipse in den Preferences unter ''General -> Editors -> File Associations'' auch externe Programme einer Dateiendung zuordnen, so daß ich auch aus Eclipse heraus iReport starten kann. Dazu habe ich iReport in seinen Einstellungen so konfiguriert, daß es keine Cache-Dateien mehr in dem Verzeichnis erstellt, in dem die Report-Beschreibung liegt, sondern das alles in ''/tmp'' macht. Damit kann ich gut leben.

=== Zusammenarbeit mit HSQLDB ===

Ich hatte einige Probleme beim Zugriff auf HSQLDB-Datenbanken. Zuerst dachte ich, daß läge daran, daß ich die mitgelieferte HSQLDB-Version 7.1 gegen die von mir benutzte, neuere Version 1.8 ausgetauscht hatte. Schliesslich bin ich aber dahintergekommen, daß es wohl an meinen Tabellennamen und Spaltennamen liegt, die nämlich Groß- und Kleinschreibung benutzen. Dadurch funktioniert der Query-Assistent leider gar nicht mehr. Dennoch kann man seinen Query-String von Hand eingeben, wenn man alle Namen in Anführungszeichen setzt. Tabellennamen kann man ohne Anführungszeichen benutzen, wenn man in der FROM-Clause den Namen nochmals als "AS"-Wert angibt. Hier mal am besten ein Beispiel aus meinem Demo-Projekt:

 SELECT "ISIN","name","kursdatum","schlusskurs","datum","anzahl","kurs", "anzahl"*"kurs" AS "preis"
 FROM "Wertpapier" Wertpapier, "Transaktion" Transaktion
 WHERE Wertpapier."id" = Transaktion."wertpapier"
 ORDER BY "ISIN", "datum"


== Links ==

* [JasperReports Homepage|http://www.jasperforge.org/jaspersoft/opensource/business_intelligence/jasperreports/index.html]
* [iReport Homepage|http://jasperforge.org/jaspersoft/opensource/business_intelligence/ireport/index.php] - Report-Designer
* [EclipsePlugin.BIRT] - Ein alternativer Report-Generator in Java
* [Liste von Eclipse-Plugins für JasperReport|http://www.jasperforge.org/index.php?option=com_mtree&task=listcats&cat_id=101&Itemid=91]
** [iReport-Plugin für Eclipse|http://www.jasperforge.org/index.php?option=com_mtree&task=viewlink&link_id=82&Itemid=91]
** [JasperAssistant Plugin für Eclipse|http://www.jasperassistant.com/]
** [Sunshine-Reports Plugin für Eclipse|http://www.pratocity.com/index.jsp?mod=/sunshine/sunshine.jsp]

[{Tag----
;Kategorien:
>> <<JavaKategorieJava, <<Eclipse}]KategorieEclipse