Berichterstellung in Java mit DynamicReports und JasperReports

Berichterstellung in Java mit DynamicReports und JasperReports

DynamicReports logo

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:

  1. DynamicReports 3.1.3

  2. JasperReports 5.0.4

  3. MySQL 5.5

  4. Maven 3

  5. 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.

report

Quellcode herunterladen

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

Related