1Christian Blaserb-next Engineering GmbHJasper ReportsJava Expertenkreis
Jasper ReportsJasper Reports --EinleitungEinleitung2• Sehr umfangreiche Open Source Java Reporting Engine• Entwicklung dur...
Jasper ReportsJasper Reports –– Features & HighlightsFeatures & Highlights3• API in Java realisiert• vollständig in eigene...
Jasper ReportsJasper Reports ––RequirementsRequirements4• Jasper Reports API – jasperreports-3.7.4.jar• Download verfügbar...
Jasper ReportsJasper Reports –– AbhängigkeitenAbhängigkeiten5JRE • Java Runtime Environment 1.4 or höherCommons •Jakarta C...
Jasper ReportsJasper Reports –– Abhängigkeiten 2Abhängigkeiten 26JDBC • JDBC 2.0 TreiberXLS • Jakarta POI (version 3.0.1 o...
Jasper ReportsJasper Reports ––Ablauf ReporterzeugungAblauf Reporterzeugung7Create• Report Definition erzeugenLoad•Reports...
Jasper ReportsJasper Reports –– ReportReport LifecycleLifecycle8JRXML JasperDesign JasperReport JasperPrintJasperPrintMana...
Jasper ReportsJasper Reports –– Erstellen eines ReportsErstellen eines Reports9• Direkt per API über ein net.sf.jasperrepo...
Jasper ReportsJasper Reports ––ReportdesignReportdesign10• Report-Design erfolgt in einem XML-Dialekt• Speicherung als JRX...
Jasper ReportsJasper Reports –– Aufbau eines BerichtsAufbau eines Berichts11• Berichtsabschnitte (Sections)TitlePage hea...
Jasper ReportsJasper Reports –– Report ladenReport laden12import dori.jasper.engine.*;import dori.jasper.engine.design.*;J...
Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen13JasperReport JasperPrintJasperFillManagerF...
Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen14• Zum Füllen werden einem Objekt vom Typ n...
Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen15…JasperReport report =JasperManager.compil...
Jasper ReportsJasper Reports –– Report exportierenReport exportieren16JasperPrintJasperPrintManagerJasperExportManagerScre...
Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen17…JasperPrint print = JasperMan...
Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen18• Zum Export wird in der Regel...
Jasper ReportsJasper Reports –– ViewerViewer19
Jasper ReportsJasper Reports –– DatenquellenDatenquellen20• Datenquellen für einen Jasper Report müssen das Interface JRDa...
Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport21• Einfache Installation• Download der akt...
Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport22
Jasper ReportsJasper Reports –– Felder und ParameterFelder und Parameter23• Benennung von Feldern und Parametern:• Felder ...
Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport24• Unterstützung von Expressions für• die ...
Jasper ReportsJasper Reports –– Chart SupportChart Support25• Jasper Reports benutzt die JFreeChart-Bibliothek zur Anzeige...
Jasper ReportsJasper Reports –– Barcode SupportBarcode Support26• Jasper Reports unterstützt die Erstellung von Barcodes• ...
Jasper ReportsJasper Reports –– InternationalisierungInternationalisierung27• Jasper Reports unterstützt Internationalisie...
Jasper ReportsJasper Reports –– Literatur, Artikel,Literatur, Artikel, FAQ‘sFAQ‘s28• Ultimate Guides für Jasper Reports un...
Jasper ReportsJasper Reports –– AlternativenAlternativen29• BIRT - http://www.eclipse.org/birt/phoenix/Unterstützung durch...
Jasper ReportsJasper Reports –– Auswahl des richtigen ToolsAuswahl des richtigen Tools30• Ziele für das Reporting definier...
Jasper ReportsJasper Reports –– QuoQuo VadisVadis??31• Starke Entwicklung in Richtung BI Tool• Jaspersoft verteibt kommerz...
Jasper ReportsJasper Reports –– Pro & ContraPro & Contra32- Stabiles und mächtigesFramework- Einfache Reporterzeugung- Erm...
Best Practice for Capital Markets ComplianceChristian BlaserLeiter Banking Solutionsb-next Engineering GmbHChristian.Blase...
Upcoming SlideShare
Loading in …5
×

Reporting mit Jasper Reports

502 views

Published on

Vortrag Expertenkreis Java 23.9.2010

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
502
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Reporting mit Jasper Reports

  1. 1. 1Christian Blaserb-next Engineering GmbHJasper ReportsJava Expertenkreis
  2. 2. Jasper ReportsJasper Reports --EinleitungEinleitung2• Sehr umfangreiche Open Source Java Reporting Engine• Entwicklung durch Teodor Danciu im Juni 2001 gestartet• Erste Version (0.1.5) am 3. November 2001 veröffentlicht, die Version 1.0 am21. Juli 2005.• Heute verfügbar durch JasperForge und kommerziell durch Jaspersoft.• JasperSoft entstand 2004 aus der Firma Panscopic. 2004 erwarb Panscopic alle Rechte anJasperReports und nannte sich in JasperSoft um.• Lizenz: LGPLv3. Kommerzielle Lizenzen incl. Support über Jasper Soft verfügbar• Aktuelle Version: 3.7.4
  3. 3. Jasper ReportsJasper Reports –– Features & HighlightsFeatures & Highlights3• API in Java realisiert• vollständig in eigene Applikationen integrierbar• pixelgenaue Erstellung von Reports• Unterstützung zahlreicher Ausgaben• Bildschirm• Drucker• Datei - Ausgabeformate: PDF, HTML, XLS, CSV, RTF, Word, TXT, XML,PPT etc.• Unterstützung nahezu beliebiger Datenquellen• Mehrsprachigkeit, Barcodes, Charts, Templates, Conditional Layouts, etc.• Community JasperForge: > 160 TSD Mitglieder, > 11Mio. downloads
  4. 4. Jasper ReportsJasper Reports ––RequirementsRequirements4• Jasper Reports API – jasperreports-3.7.4.jar• Download verfügbar über JasperForgehttp://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%203.7.4/jasperreports-3.7.4.jar/download• Registrierung bei JasperForge nicht zwingend erforderlich(siehe Link im unteren Bereich der Seite)• Alle Funktionalitäten in einer API gebündelt• regelmäßige Releases - Minor Updates in monatlichen Zyklen• zahlreiche Abhängigkeiten zu weiteren Bibliotheken
  5. 5. Jasper ReportsJasper Reports –– AbhängigkeitenAbhängigkeiten5JRE • Java Runtime Environment 1.4 or höherCommons •Jakarta Commons BeanUtils Component (version 1.7 oder höher)http://jakarta.apache.org/commons/beanutils/•Jakarta Commons Collections Component (version 2.1 oder höher)http://jakarta.apache.org/commons/collections/•Jakarta Commons Javaflow (Sandbox version)http://jakarta.apache.org/commons/sandbox/javaflow/•Jakarta Commons Logging Component (version 1.0 oder höher)http://jakarta.apache.org/commons/logging/JRXML • JAXP 1.1 XML Parser• Jakarta Commons Digester (version 1.7 oder höher)http://jakarta.apache.org/commons/digester/• Für die Report Übersetzung einen der folgenden Compiler:•Eclipse JDT Java Compiler (recommended) http://www.eclipse.org/jdt/•JDK 1.4 oder höher•Jikes Compiler http://jikes.sourceforge.net•Groovy (version 1.5.5 or later) http://groovy.codehaus.org•BeanShell (version 2.0 beta 4 or later) http://www.beanshell.org
  6. 6. Jasper ReportsJasper Reports –– Abhängigkeiten 2Abhängigkeiten 26JDBC • JDBC 2.0 TreiberXLS • Jakarta POI (version 3.0.1 or later) http://jakarta.apache.org/poi/• JExcelApi (version 2.6 or later) http://jexcelapi.sourceforge.net/Charts • JFreeChart (>= Version 1.0.0) http://www.jfree.org/jfreechart/•JCommon – für JFreeChart http://www.jfree.org/jcommon/•Batik SVG Toolkit (>= Version 1.7) – erforderlich, wenn Charts als SVG gerendert werden sollen.http://xmlgraphics.apache.org/batik/PDF • iText - Freie Java-PDF library von Bruno Lowagie and Paulo Soares (>= version 1.3.1)http://www.lowagie.com/iText/
  7. 7. Jasper ReportsJasper Reports ––Ablauf ReporterzeugungAblauf Reporterzeugung7Create• Report Definition erzeugenLoad•Reportsdesign ladenCompile•Design kompilierenFill•Design mit Daten füllenExport•Report exportieren oder anzeigen
  8. 8. Jasper ReportsJasper Reports –– ReportReport LifecycleLifecycle8JRXML JasperDesign JasperReport JasperPrintJasperPrintManagerJasperFillManagerJasperCompileManagerJRXmlLoader JRCompilerJasperExportManagerparse CompileFillScreenPrinterPDFetc.HTMLPrintExportReport Lifecycle
  9. 9. Jasper ReportsJasper Reports –– Erstellen eines ReportsErstellen eines Reports9• Direkt per API über ein net.sf.jasperreports.engine.design.JasperDesign -Objekt• Erstellen einer JRXML-Datei per Editor• Nutzung eines Report Designers• IReport:• verfügbar unter http://jasperforge.org/projects/ireport• Kommerzielle Version oder GPL-Version verfügbar• direkt vom gleichen Projekt• Jasper Assistant:• verfügbar unter http://www.jasperassistant.com/• Lizenz ab 129$• Eclipse-Plugin verfügbar
  10. 10. Jasper ReportsJasper Reports ––ReportdesignReportdesign10• Report-Design erfolgt in einem XML-Dialekt• Speicherung als JRXML-Datei<?xml version="1.0"?><!DOCTYPE jasperReportPUBLIC "-//JasperReports//DTD Report Design//EN""http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"><jasperReport name="Simple_Report"><detail><band height="20"><staticText><reportElement x="180" y="0" width="200"height="20"/><text><![CDATA[Hello World!]]></text></staticText></band></detail></jasperReport>
  11. 11. Jasper ReportsJasper Reports –– Aufbau eines BerichtsAufbau eines Berichts11• Berichtsabschnitte (Sections)TitlePage headerColumn headerDetailColumn footerPage footerSummaryLast page footerBackground• AttributeBand heightPreventing band splitSkipping bands• Gruppierungen• Felder, Variablen, Expressions• Parameter• Report Query oder Datenquelle• Subreports• Charts
  12. 12. Jasper ReportsJasper Reports –– Report ladenReport laden12import dori.jasper.engine.*;import dori.jasper.engine.design.*;JasperDesign design =JasperManager.loadXmlDesign("hello.jrxml");JasperReport report =JasperManager.compileReport(design);JRXML JasperDesign JasperReportJasperCompileManagerJRXmlLoader JRCompilerparse Compile
  13. 13. Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen13JasperReport JasperPrintJasperFillManagerFillcompiledReport TemplateParameter DataSource• Im “Fill”-Prozess werden neben Report Parametern, Resource Bundles, Locales, auch dieDaten an den Report übergeben.• Ergebnis ist eine anzeigbare, druck- bzw. exportierbare Version des Reports als Objekt derKlasse net.sf.jasperreports.engine.JasperPrint
  14. 14. Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen14• Zum Füllen werden einem Objekt vom Typ net.sf.jasperreports.engine.JasperFillManager• Übergeben werden für das Report Template• java.io.InputStream oder• net.sf.jasperreports.engine.JasperReport oder• java.lang.String sourceFileName• Parameter werden als java.util.Map params übergeben• Daten werden übergeben als :• Implementierung Interface JRDataSource oder• java.sql.Connection connection• Hierbei wird die eine SQL Query, die im Report definiert ist, per JDBCVerbindung ausgeführt und das resultierende ResultSet-Objekt in eineJRResultSetDataSource gewrapped
  15. 15. Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen15…JasperReport report =JasperManager.compileReport(design);ResultSet rs = getResultSet();JRDataSource dataSource = newJRResultSetDataSource(rs);Map params = new java.util.HashMap();params.put("Bonus", new Integer(12000));params.put("Year", "2004");JasperPrint print = JasperManager.fillReport(report, param, dataSource);Beispiel: Reportdesign befüllen
  16. 16. Jasper ReportsJasper Reports –– Report exportierenReport exportieren16JasperPrintJasperPrintManagerJasperExportManagerScreenPrinterPDFXMLHTMLPrintExportXLS (Excel)(Word)RTF (Word)TXTCSV
  17. 17. Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen17…JasperPrint print = JasperManager.fillReport(report, param, dataSource);<!-- FileExport -->JasperExportManager.exportReportToHtmlFile(print, "hello.html");JasperExportManager.exportReportToPdfFile(print, "hello.pdf");JasperExportManager.exportReportToXmlFile(print, "hello.xml", false);<!-- Bildschirmanzeige -->JasperViewer jv = new JasperViewer( jasperPrint,false, locale);jv.setVisible( true );Beispiel: Reportdesign exportieren oder anzeigen
  18. 18. Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen18• Zum Export wird in der Regel eine Instanz der Klassenet.sf.jasperreports.engine.JasperExportManager verwendet.• Methoden zum Export in PDF, HTML, XML im JasperExportManager vorhanden• Output erfolgt in File, byte array oder in java.io.Outputstream• Für den spezialisierten Export können Implementierungen des Interfacesnet.sf.jasperreports.engine .JRExporter genutzt werden• Direkte Implementierungen sind:JExcelApiExporter JRAbstractExporter, JRCsvExporter, JRDocxExporter, JRGraphics2DExporter, JRHtmlExporter,JROdsExporter, JROdtExporter, JROpenDocumentExporter, JRPdfExporter, JRPptxExporter,JRPrintServiceExporter, JRRtfExporter, JRTextExporter, JRXhtmlExporter, JRXlsAbstractExporter, JRXlsExporter,JRXlsxExporter, JRXml4SwfExporter, JRXmlExporter, JRXmlssExporter
  19. 19. Jasper ReportsJasper Reports –– ViewerViewer19
  20. 20. Jasper ReportsJasper Reports –– DatenquellenDatenquellen20• Datenquellen für einen Jasper Report müssen das Interface JRDatasource implementieren• Zahlreiche Defaultimplementierungen vorhanden:JRAbstractBeanDataSource, JRAbstractTextDataSource, JRBeanArrayDataSource,JRBeanCollectionDataSource, JRCsvDataSource, JREmptyDataSource, JRHibernateAbstractDataSource,JRHibernateIterateDataSource, JRHibernateListDataSource, JRHibernateScrollDataSource,JRJpaDataSource, JRMapArrayDataSource, JRMapCollectionDataSource, JRMondrianDataSource,JROlapDataSource, JRResultSetDataSource, JRSortableDataSource, JRTableModelDataSource,JRXlsDataSource, JRXmlDataSourcepublic interface JRDataSource{public boolean next()throws JRException;public Object getFieldValue(JRField field)throws JRException;}
  21. 21. Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport21• Einfache Installation• Download der aktuellsten Version von Jasperforge und Start der EXE• Verschiedene Wizards zur Erstellung erster Reports, Styles und SQL Queries• Gute Unterstützung zur Positionierung und Ausrichtung von Report Elementen• Preview in allen Ausgabeformaten und leichter Wechsel der Datenquellen
  22. 22. Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport22
  23. 23. Jasper ReportsJasper Reports –– Felder und ParameterFelder und Parameter23• Benennung von Feldern und Parametern:• Felder werden im Report mit $F { Feldname } angeprochen• Parameter werden mit $P { Feldname } adressiert• Resourcen werden mit $R { Feldname } adressiert• Quelle der Felder ist ein Eintrag in der Datasource• Quelle der Parameter ist die Map, die als Parameter beim Füllen des Reports übergebenwurde• Quelle der Resourcen ist das Language Resource Bundle des Berichts• Der Feldname eines Parameters oder einer Resource muss dem Key in der Map oder demResourceBundle entsprechen und der Typ dem jeweiligen Objekttyp• Feldnamen für Felder hängen von der Datasource ab:• Bei einem Resultset/Datenbank Abfrage ist der Feldname gleich dem Spaltennamen• Bei einer Bean Datasource muss der Feldname dem Attribut des Beans entsprechen• Bei einem TableModel müssen die Felder Column1, Column2, etc. genannt werden
  24. 24. Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport24• Unterstützung von Expressions für• die Anzeige (TextField Expression)• konditionaler Druck (Print when expression)• Unterstützung von Feldformaten• Eigenschaften für Felder können parametrisiert werden
  25. 25. Jasper ReportsJasper Reports –– Chart SupportChart Support25• Jasper Reports benutzt die JFreeChart-Bibliothek zur Anzeige von Chart-Elementen•Quelle: http://www.jfree.org/jfreechart/• Es werden zahlreiche Chart-Typen unterstützt• Chart lässt sich im Report durch externe Style-Dateiparametrisieren
  26. 26. Jasper ReportsJasper Reports –– Barcode SupportBarcode Support26• Jasper Reports unterstützt die Erstellung von Barcodes• Verwendung von Barbecuehttp://barbecue.sourceforge.net/• Alternative Verwendung von Barcode4Jhttp://barcode4j.sourceforge.net/• Unterstützung zahlreicher 1D- und 2D-Codes
  27. 27. Jasper ReportsJasper Reports –– InternationalisierungInternationalisierung27• Jasper Reports unterstützt Internationalisierung auf Basis der Java-Mittel(Locale, Resource Bundle)• Es werden Unicode (UTF-8), ISO-8859-1 (Latin 1) und weitere Encodings unterstützt.• Ein Reportdesign kann so in verschiedenen Sprachen angezeigt werden.• Übergabe Resource File und Locale in den Report-ParameternHashMap params = new HashMap();params.put("REPORT_RESOURCE_BUNDLE",reportlang.getLanguageResourceBundle());params.put( "REPORT_LOCALE", Language.getLocaleObject() );
  28. 28. Jasper ReportsJasper Reports –– Literatur, Artikel,Literatur, Artikel, FAQ‘sFAQ‘s28• Ultimate Guides für Jasper Reports und iReportvon JasperSoft als PDF Buch verfügbar je 49,95$ incl.Subscription für Updates• The Definitive Guide to JasperReports ,Teodor Danciu, Lucian Chirita , Giulio ToffoliAmazon Preis: 37 EUR• Jasperreports 3.5 for Java Developers ,David Heffelfinger, Amazon Preis: 35 EUR• JasperReports 3.6 Development Cookbook,Bilal Siddiqui, 32 EUR, als PDF 22EUR• The Definitive Guide to iReport ,Giulio Toffoli ,Teodor DanciuAmazon Preis: 42 EUR• iReport 3.7,Shamsuddin AhammadAmazon Preis: 42 EUR
  29. 29. Jasper ReportsJasper Reports –– AlternativenAlternativen29• BIRT - http://www.eclipse.org/birt/phoenix/Unterstützung durch Actuate• Crystal Reports - http://www.sap.com/solutions/sap-crystal-solutions/index.epxSAP früher Business Objects• Jreport - http://www.jinfonet.com/Jinfonet Software• Windward Reports - http://www.windwardreports.comWindward Reports• weitere Tools und Libs verfügbar:http://java-source.net/open-source/charting-and-reporting
  30. 30. Jasper ReportsJasper Reports –– Auswahl des richtigen ToolsAuswahl des richtigen Tools30• Ziele für das Reporting definieren:• Dokumentengenerierung (z.B. PDF, DOC)- Rechnungen drucken, Listen ausgeben, etc.• BI Abfragen mit AdHoc Queries und Datenanalyse• Charting, Dashboards, grafische Ausgaben?• Zielgruppe: Technik, Endanwender, ManagementSoll der User selber Reports gestalten?Welche techn. Skills hat er?• PortabilitätSind die Reporting Engines voll in Java umgesetzt oder werden proprietäreAnwendungen genutzt? (z.B. MS Word, Windows dll, etc.)• Templates:Sollen Templates genutzt werden ?Sollen Templates durch den Endanwender (Fachabteilung) erstellt werdenkönnen?
  31. 31. Jasper ReportsJasper Reports –– QuoQuo VadisVadis??31• Starke Entwicklung in Richtung BI Tool• Jaspersoft verteibt kommerziell Jaspersoft Business Intelligence Suite• Jasper Server (kommerziell, GPL)Report Server, Ad hoc Queries, Dashboard, Flash Charting, Datenanalyse/OLAP• Jasper Report (LGPL)Reportframework• iReport (kommerziell, GPL)Reportdesigner• Jasper AnalysisOLAP Funktionalitäten• Jasper ETL (kommerziell, GPL)Datenintegration, Transformation
  32. 32. Jasper ReportsJasper Reports –– Pro & ContraPro & Contra32- Stabiles und mächtigesFramework- Einfache Reporterzeugung- Ermöglicht einfaches Druckenoder Dokumentenexport aus JavaAnwendungen heraus- PDF Unterstüzung, vieleFormate- Flexible Datenquellen- Gut integrierbar+- Viele externe Abhängigkeiten- Unklare Entwicklung desLizenzmodells- Verknüpfung Feldbezeichner zurDatenquelle- Parameter nicht immer gutdokumentiert-
  33. 33. Best Practice for Capital Markets ComplianceChristian BlaserLeiter Banking Solutionsb-next Engineering GmbHChristian.Blaser@b-next.deFon: +(49) 05221 99 280 0Vielen Dank für IhreAufmerksamkeitVielen Dank für IhreAufmerksamkeit

×