DynamicReports是一款基于JasperReports免费开源的报表工具。
特色功能:允许创建动态报表,完全可以不用专门的设计器来设计;
可以非常快速地创建报表、生成文件、显示、打印或导出到其它许多流行的格式(PDF、Excel、Word)。
MAVEN项目增加以下内容
<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>
例子:
public class SimpleReportDemo { private static Connection getConn() throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); return(Connection) DriverManager.getConnection("jdbc:mysql://localhost/database", "username", "password"); } public static void buildReport(Connection conn){ JasperReportBuilder report=DynamicReports.report();//创建空报表 //样式 StyleBuilder boldStl=DynamicReports.stl.style().bold(); StyleBuilder boldCenteredStl=DynamicReports.stl.style(boldStl).setHorizontalAlignment(HorizontalAlignment.CENTER); StyleBuilder titleStl=DynamicReports.stl.style(boldCenteredStl).setFontSize(16); StyleBuilder columnTitleStl=DynamicReports.stl.style(boldCenteredStl).setBorder(DynamicReports.stl.pen1Point()) .setBackgroundColor(Color.LIGHT_GRAY); report.columns(Columns.column("ID", "id", DataTypes.integerType()). setHorizontalAlignment(HorizontalAlignment.CENTER),//列 Columns.column("手机号段", "code", DataTypes.stringType()), Columns.column("运营商","service",DataTypes.stringType()), Columns.column("省份","province",DataTypes.stringType()), Columns.column("城市","city",DataTypes.stringType()), Columns.column("品牌","type",DataTypes.stringType())) .setColumnTitleStyle(columnTitleStl) .setHighlightDetailEvenRows(true) .title(Components.text("手机号段").setStyle(titleStl))//标题 .pageFooter(Components.pageXofY().setStyle(boldCenteredStl))//页角 .setDataSource("select * from codesubinfo limit 20", conn);//数据源 try { //显示报表 report.show(); //生成PDF文件 //report.toPdf(new FileOutputStream("D:/test.pdf")); } catch (DRException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String orgs[]){ try { Connection conn=getConn(); buildReport(conn); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }