原创

Java 利用 DynamicReports 生成报表讲解

DynamicReports 是一个基于 JasperReports 进行扩展的 Java 报表库,可用它来快速创建报表而无需可视化报表设计工具。它能够创建动态的报表设计,而无需可视化报表设计工具。可以非常快地创建报表并生成可以展示和打印的文档,也可以导出各种常见的格式如PDF、Excel、Word等。

DynamicReports的特点如下:

1)动态创建报表,完全抛弃设计器来设计

2)快速地创建报表、生成文件、显示、打印或导出到其它许多流行的格式(PDF、Excel、Word)

项目中增加 Maven pom.xml 配置文件,具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Test</groupId>
	<artifactId>Test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Test</name>
	<description>Test</description>
	<dependencies>
		<dependency>  
		    <groupId>net.sourceforge.dynamicreports</groupId>  
		    <artifactId>dynamicreports-core</artifactId>  
		    <version>3.0.4</version>  
		</dependency>  
		<dependency>  
		    <groupId>mysql</groupId>  
		    <artifactId>mysql-connector-java</artifactId>  
		    <version>5.1.22</version>
		</dependency> 
	</dependencies>
</project>

在项目中选中 pom.xml 文件,右击执行 Run As -> Maven install 引入需要的jar包,再执行eclipse:eclipse命令。

Java 执行生成报表,具体代码如下:

package com.yoodb;

import java.awt.Color;
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.builder.style.StyleBuilder;
import net.sf.dynamicreports.report.constant.HorizontalAlignment;
import net.sf.dynamicreports.report.exception.DRException;

public class ReportDemo {

	private static Connection getConn() throws ClassNotFoundException,
			SQLException {
		Class.forName("com.mysql.jdbc.Driver");
		return (Connection) DriverManager.getConnection(
				"jdbc:mysql://127.0.0.1:3306/mysql", "root",
				"123456");
	}

	public static void buildReport(Connection conn) {
		JasperReportBuilder report = DynamicReports.report();//创建空 JasperReport 报表
		//样式属性
		StyleBuilder boldStl = DynamicReports.stl.style().bold();//加粗
		StyleBuilder centerStl = DynamicReports.stl.style(boldStl)
				.setHorizontalAlignment(HorizontalAlignment.CENTER);
		StyleBuilder titleStl = DynamicReports.stl.style(centerStl)
				.setFontSize(16);//字体大小
		StyleBuilder columnTitleStl = DynamicReports.stl.style(centerStl)
				.setBorder(DynamicReports.stl.pen1Point())
				.setBackgroundColor(Color.LIGHT_GRAY);//设置标题颜色
		report.columns(
				Columns.column("Select_priv", "Select_priv",DataTypes.stringType())
				.setHorizontalAlignment(HorizontalAlignment.CENTER),
				Columns.column("Insert_priv", "Insert_priv",DataTypes.stringType())
				.setHorizontalAlignment(HorizontalAlignment.CENTER),
				Columns.column("Update_priv", "Update_priv",DataTypes.stringType())
				.setHorizontalAlignment(HorizontalAlignment.CENTER),
				Columns.column("address", "address",DataTypes.stringType())
				.setHorizontalAlignment(HorizontalAlignment.CENTER),
				Columns.column("plugin", "plugin", DataTypes.stringType()))
				.setColumnTitleStyle(columnTitleStl)
				.setHighlightDetailEvenRows(true)//行高亮
				.title(Components.text("MYSQL USER").setStyle(titleStl))//标题名称
				.pageFooter(Components.pageXofY().setStyle(centerStl))//页角
				.setDataSource("select *,'www.yoodb.com' address from user", conn);//调用数据源并返回数据
		try {
			report.show();//显示报表
			//report.toPdf(new FileOutputStream("D://test.pdf"));//生成PDF文件
		} catch (DRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String orgs[]) {
		Connection conn = null;
		try {
			conn = getConn();
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		buildReport(conn);
	}
}
~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信