DynamicReports是一款相当敏捷的java报表组件,并且是完全免费开源的。和之前介绍的JFreeChart不同,DynamicReports是报表和可视化图表相结合的,可以更加直观地展现和统计数据。DynamicReports是对JasperReports的扩展,完全可以不用专门的设计器来设计。
DynamicReports的特点
- 使用非常方便
- 可继承的报表设计
- 无需可视化设计工具
- 可混合动态报表和静态报表
-
DynamicReports的使用方法
这里我们以MAVEN项目为例,你可以在项目中加入以下XML文件:
- <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>
复制代码
Java代码如下:
- 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();
- }
- }
-
复制代码
DynamicReports作为一款Java报表和图表生成类库,其小巧和简单是一大亮点。
(文章来源
:
http://www.nei-mao.com/
)