DynamicReports是一款基于JasperReports免费开源的报表工具。
特色功能:允许创建动态报表,完全可以不用专门的设计器来设计;
可以非常快速地创建报表、生成文件、显示、打印或导出到其它许多流行的格式(PDF、Excel、Word)。
还有一份更好的DEMO:https://sourceforge.net/projects/dynamicreports/files/dynamicreports/
官方教程:http://www.dynamicreports.org/examples/examples-overview#adhoc
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 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(); } }