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>
例子:
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();
}
}