27
Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Embed Size (px)

Citation preview

Page 1: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Generating reports with JasperReports

Sean C. SullivanPortland Java Users GroupApril 2004

Page 2: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Agenda

• JasperReports

• JasperAssistant

Page 3: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperReports

• http://jasperreports.sourceforge.net/

• open source Java reporting tool

Page 4: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Using JasperReports

1. Create a JRXML file

2. Load the JRXML file

3. Compile the report

4. Fill the report with data

5. Export the report (PDF, HTML, etc)

Page 5: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Hello Jasper

import dori.jasper.engine.*;

import dori.jasper.engine.design.*;

import java.sql.*;

JasperDesign design = JasperManager.loadXmlDesign("hello.jrxml");

JasperReport report = JasperManager.compileReport(design);

Page 6: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Hello Jasper

ResultSet rs = getResultSet();

JRDataSource dataSource = new JRResultSetDataSource(rs);

Map params = new java.util.HashMap();

params.put("Bonus", new Integer(12000));

params.put("Year", “2004”);

Page 7: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Hello Jasper

JasperPrint print = JasperManager.fillReport(

report, param, dataSource);

JasperExportManager.exportReportToHtmlFile(

print, "hello.html");

JasperExportManager.exportReportToPdfFile(

print, "hello.pdf");

JasperExportManager.exportReportToXmlFile(

print, "hello.xml", false);

Page 8: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperReports 101

• design objects– JasperDesign

• report objects– JasperReport

• datasource objects– JRDataSource

• print objects– JasperPrint

Page 9: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

XML report templates

• jasperreport.dtd

• File extension: jrxml

Page 10: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Example: JRXML file

<?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" pageWidth="900" pageHeight="1000" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30">

<!-- etc -->

</jasperReport>

Page 11: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperDesign objects

• JasperManager.loadXMLDesign

• JasperManager.loadDesign

Page 12: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Manager classes

• dori.jasper.engine.JasperManager

• dori.jasper.engine.JasperCompileManager

• dori.jasper.engine.JasperFillManager

• dori.jasper.engine.JasperPrintManager

• dori.jasper.engine.JasperExportManager

Page 13: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Compiling designs

JasperDesign design = JasperManager.loadXmlDesign("metrics.jrxml");

JasperReport report = JasperManager.compileReport(design);

Page 14: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Ant task: <jrc>

<jrc srcdir="${src.reports.dir}" destdir="${build.dir}/reports" tempdir="${build.dir}/temp" keepjava="true" xmlvalidation="true"> <classpath> <pathelement location="${classes.dir}"/> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </classpath></jrc>

Page 15: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Data sources

• a data source is an object that provides data to Jasper's report engine

• do not confuse with javax.sql.DataSource

Page 16: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JRDataSource interface

public interface JRDataSource

{

public boolean next()

throws JRException;

public Object getFieldValue(JRField field)

throws JRException;

}

Page 17: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Data source classes

• JRResultSetDataSource

• JRBeanArrayDataSource

• JRBeanCollectionDataSource

• JRMapArrayDataSource

• JRMapCollectionDataSource

• JRTableModelDataSource

Page 18: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Output formats

• CSV (JRCsvExporter)

• JPEG

• PDF (JRPdfExporter)

• XLS (JRXlsExporter)

• XML (JRXmlExporter)

• HTML (JRHtmlExporter)

Page 19: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperReports viewers

Swing applications– dori.jasper.view.JasperViewer– dori.jasper.view.JasperDesignViewer

Page 20: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperViewer

Page 21: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperAssistant

• visual report designer

• commercial tool (not open source)

www.jasperassistant.com

Page 22: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

JasperAssistant

JasperAssistant runs inside Eclipse

Page 23: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Demo: JasperAssistant

Page 24: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Open source projects

http://jasperreports.sourceforge.net/

http://www.jfree.org/jfreereport/

http://datavision.sourceforge.net/

http://www.lowagie.com/iText/

http://xml.apache.org/fop/

Page 25: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Commercial software

• ReportMill

• Actuate

• Windward Reports

• Crystal Reports

• Oracle Reports

• Cognos ReportNet

• Hyperion Reports

Page 26: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Beyond JasperReports

• Who is allowed to create and modify report templates?

• Where are the report templates stored?

• How will you publish and distribute the reports?

• Do you need to archive the reports?

• Will you generate reports on demand or on a fixed schedule (nightly, weekly) ?

• Is user A allowed to view report B?

Page 27: Generating reports with JasperReports Sean C. Sullivan Portland Java Users Group April 2004

Conclusion

Download JasperReports today

http://jasperreports.sourceforge.net