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); } }