Berichterstellung in Java mit DynamicReports und JasperReports

Dieses Beispiel zeigt, wie Sie mit DynamicReports und JasperReports einen einfachen Bericht erstellen. DynamicReports ist eine Java-Berichtsbibliothek, mit der Sie Berichtsdokumente erstellen können, die in viele gängige Formate exportiert werden können. Es basiert auf der bekannten JasperReports-Bibliothek.
In diesem Artikel verwendete Tools:
-
DynamicReports 3.1.3
-
JasperReports 5.0.4
-
MySQL 5.5
-
Maven 3
-
JDK 1.6.0
1. Laden Sie DynamicReports herunter
Laden Sie DynamicReports von offiziellenwebsite herunter. Wenn Sie Maven verwenden, können Sie es aus dem zentralen Maven-Repository herunterladen. Fügen Sie für Maven-Projekte der Datei pom.xml die folgende Konfiguration hinzu:
pom.xml
net.sourceforge.dynamicreports dynamicreports-core 3.1.3 mysql mysql-connector-java 5.1.25
2. Datenquelle melden
Stellen Sie mit einem JDBC-Treiber eine Verbindung zu einer MySQL-Datenbank her.
Class.forName("com.mysql.jdbc.Driver");
Connection connection =
DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password");
3. Berichtsersteller
Nehmen wir an, der MySQL-Server enthält eine Datenbanktabelle Kunden und die Kundentabelle hat die folgende Struktur:
Spaltenname |
Datentyp |
id |
int |
Vorname |
varchar (50) |
Familienname, Nachname |
varchar (50) |
date |
date |
Wir werden einen Bericht erstellen, der alle Kunden aus der Tabelle holt und die Daten in den Bericht einfügt.
3.1 Create a new empty report object.
JasperReportBuilder report = DynamicReports.report();
3.2 Now create a report colum for each database column.
Columns.column("Customer Id", "id", DataTypes.integerType())
Der erste Parameter ist eine Spaltenbezeichnung, die im Berichtskopf angezeigt wird.
Der zweite Parameter ist ein Spaltenname. Dieser Name sollte mit dem Namen der Datenbankspalte identisch sein.
Der dritte Parameter ist ein Java-Typ der Spalte.
3.3 Add the report columns.
report
.columns(
Columns.column("Customer Id", "id", DataTypes.integerType()),
Columns.column("First Name", "first_name", DataTypes.stringType()),
Columns.column("Last Name", "last_name", DataTypes.stringType()),
Columns.column("Date", "date", DataTypes.dateType()))
3.4 Add a title text and a page number to the report.
.title(//title of the report
Components.text("SimpleReportExample")
.setHorizontalAlignment(HorizontalAlignment.CENTER))
.pageFooter(Components.pageXofY())//show page number on the page footer
3.5 Finally set the data source query and connection.
.setDataSource("SELECT id, first_name, last_name, date FROM customers ", connection);
4. Vollständiges Beispiel
SimpleReportExample.java
package net.sf.dynamicreports.examples;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.report.builder.DynamicReports;
import net.sf.dynamicreports.report.builder.column.Columns;
import net.sf.dynamicreports.report.builder.component.Components;
import net.sf.dynamicreports.report.builder.datatype.DataTypes;
import net.sf.dynamicreports.report.constant.HorizontalAlignment;
import net.sf.dynamicreports.report.exception.DRException;
public class SimpleReportExample {
public static void main(String[] args) {
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://hostname:port/dbname","username", "password");
} catch (SQLException e) {
e.printStackTrace();
return;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
JasperReportBuilder report = DynamicReports.report();//a new report
report
.columns(
Columns.column("Customer Id", "id", DataTypes.integerType()),
Columns.column("First Name", "first_name", DataTypes.stringType()),
Columns.column("Last Name", "last_name", DataTypes.stringType()),
Columns.column("Date", "date", DataTypes.dateType()))
.title(//title of the report
Components.text("SimpleReportExample")
.setHorizontalAlignment(HorizontalAlignment.CENTER))
.pageFooter(Components.pageXofY())//show page number on the page footer
.setDataSource("SELECT id, first_name, last_name, date FROM customers",
connection);
try {
//show the report
report.show();
//export the report to a pdf file
report.toPdf(new FileOutputStream("c:/report.pdf"));
} catch (DRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
5. Starte es
Führen Sie die SimpleReportExample-Klasse aus.
Abbildung: Eine PDF-Datei wird erstellt.

Quellcode herunterladen
Laden Sie es herunter -JavaDynamicReports-Example.zip (11 KB)