Рубрики
Без рубрики

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

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

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

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

  1. Динамические отчеты 3.1.3
  2. JasperReports 5.0.4 – отчеты
  3. MySQL 5.5
  4. Мавен 3
  5. JDK 1.6.0 JDK 1.6.0

1. Скачать динамические отчеты

Загрузите динамические отчеты с официального веб-сайта . Если вы используете Maven, вы можете загрузить его из центрального хранилища Maven. Для проектов Maven добавьте следующую конфигурацию в 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 содержит таблицу базы данных customers, а таблица customers имеет следующую структуру:

Имя столбца Тип данных
идентификатор инт
первое имя варчар (50)
фамилия и имя варчар (50)
дата дата

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

3.1 Создайте новый пустой объект отчета.

JasperReportBuilder report = DynamicReports.report();

3.2 Теперь создайте столбец отчета для каждого столбца базы данных.

Columns.column("Customer Id", "id", DataTypes.integerType())

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

3.3 Добавьте столбцы отчета.

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 Добавьте в отчет текст заголовка и номер страницы.

  .title(//title of the report
    Components.text("SimpleReportExample")
      .setHorizontalAlignment(HorizontalAlignment.CENTER))
  .pageFooter(Components.pageXofY())//show page number on the page footer

3.5 Наконец, установите запрос к источнику данных и подключение.

  .setDataSource("SELECT id, first_name, last_name, date FROM customers ", connection);

4. Полный Пример

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

Запустите класс Простого примера отчета.

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

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

Рекомендации

  1. Динамические отчеты
  2. Джасперрепорты
  3. Динамические отчеты – Начало работы
  4. Динамические отчеты – Документация

Оригинал: “https://mkyong.com/java/reporting-in-java-using-dynamicreports-and-jasperreports/”