DynamicReports 是一个基于 JasperReports 进行扩展的 Java 报表库,可用它来快速创建报表而无需可视化报表设计工具。它能够创建动态的报表设计,而无需可视化报表设计工具。可以非常快地创建报表并生成可以展示和打印的文档,也可以导出各种常见的格式如PDF、Excel、Word等。
DynamicReports的特点如下:
1)动态创建报表,完全抛弃设计器来设计
2)快速地创建报表、生成文件、显示、打印或导出到其它许多流行的格式(PDF、Excel、Word)
项目中增加 Maven pom.xml 配置文件,具体内容如下:<?xml version="1.0" encoding="UTF-8"?>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
Test
Test
0.0.1-SNAPSHOT
Test
Test
net.sourceforge.dynamicreports
dynamicreports-core
3.0.4
mysql
mysql-connector-java
5.1.22
在项目中选中 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);
}
}