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

В этом примере показано, как создать простой отчет с помощью DynamicReports и JasperReports. DynamicReports - это библиотека отчетов Java, которая позволяет создавать документы отчетов, которые можно экспортировать во многие популярные форматы. Он основан на известной библиотеке JasperReports.
Инструменты, используемые в этой статье:
-
DynamicReports 3.1.3
-
JasperReports 5.0.4
-
MySQL 5.5
-
Maven 3
-
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.

Скачать исходный код
Скачать -JavaDynamicReports-Example.zip (11 КБ)