DynamicReports是一款基于JasperReports免费开源的报表工具。

特色功能:允许创建动态报表,完全可以不用专门的设计器来设计;

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

还有一份更好的DEMO:https://sourceforge.net/projects/dynamicreports/files/dynamicreports/

官方教程:http://www.dynamicreports.org/examples/examples-overview#adhoc

 

 MAVEN项目增加以下内容

1. <dependency>
2. <groupId>net.sourceforge.dynamicreports</groupId>
3. <artifactId>dynamicreports-core</artifactId>
4. <version>3.0.4</version>
5. </dependency>
6. <dependency>
7. <groupId>mysql</groupId>
8. <artifactId>mysql-connector-java</artifactId>
9. <version>5.1.22</version>
10. </dependency>


例子:


java可以集成的报表工具 java报表生成器_java



public static void main(String[] args) {
    getData();
    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);

    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", 123);
    map.put("code", "185");
    map.put("service", "中国移动");
    map.put("province", "重庆");
    map.put("city", "重庆");
    map.put("type", "apple");
    map.put("name", "测试");
    list.add(map);

    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(list);// 数据源
    try {
        // 显示报表
         report.show();
        //report.toXls(new FileOutputStream("F:/test.xls"));
        // 生成PDF文件
        // report.toPdf(new FileOutputStream("F:/test.pdf"));
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}