Отчетность в Java с использованием DynamicReports и JasperReports

Отчетность на Java с использованием DynamicReports и JasperReports

DynamicReports logo

В этом примере показано, как создать простой отчет с помощью DynamicReports и JasperReports. DynamicReports - это библиотека отчетов Java, которая позволяет создавать документы отчетов, которые можно экспортировать во многие популярные форматы. Он основан на известной библиотеке JasperReports.

Инструменты, используемые в этой статье:

  1. DynamicReports 3.1.3

  2. JasperReports 5.0.4

  3. MySQL 5.5

  4. Maven 3

  5. JDK 1.6.0

1. Скачать DynamicReports

Загрузите DynamicReports с официального сайтаwebsite. Если вы используете Maven, вы можете загрузить его из центрального репозитория Maven. Для проектов Maven добавьте следующую конфигурацию в файл pom.xml:

pom.xml


        
    
        net.sourceforge.dynamicreports
        dynamicreports-core
        3.1.3
    

        
    
        mysql
        mysql-connector-java
        5.1.25
    

2. Источник данных отчета

Подключитесь к базе данных MySQL с помощью драйвера JDBC.

Class.forName("com.mysql.jdbc.Driver");
Connection connection =
  DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password");

3. Конструктор отчетов

Предположим, что сервер MySql содержит таблицу клиентов базы данных, а таблица клиентов имеет следующую структуру:

Название колонки

Тип данных

id

int

имя

VARCHAR (50)

фамилия

VARCHAR (50)

date

date

Мы создадим отчет, который получит всех клиентов из таблицы, и данные будут помещены в отчет.

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())

Первый параметр - это метка столбца, которая будет отображаться в заголовке отчета.
Второй параметр - это имя столбца, это имя должно совпадать с именем столбца базы данных.
Третий параметр - тип столбца Java.

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. Полный пример

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. Запустить его

Запустите класс SimpleReportExample.

Рис.: Будет создан файл pdf.

report

Скачать исходный код

Скачать -JavaDynamicReports-Example.zip (11 КБ)

Related