平时我们开发一些报表,例如汇总报表、电子发票、收据单等可以使用ireport来实现,自己绘制报表模板,然后java代码根据逻辑把相应的实例或集合传入即可。
1:中文乱码处理
对于中文字体,选中控件-“属性”-font-name[宋体]-pdf font name[STSong-Light]-pdf encoding[UniGB-UCS2-H(Chines...)]
2:制作表格
Fields-自定义fields-ctrl选中多个控件[右键-size-Adapt to parent height]
同理,相同高度[size-same height]
表格边框样式[属性-style-table_TD]
3:统计某一列的总和(SUM)| 参考:http://jaspereport.group.iteye.com/group/wiki/3401-jaspereport-ireport
variables中新建‘FEE_SUM’拖到Summary区域,其中属性variable class:java.lang.long| reset type:report | increment type:report |
Initial value:newjava.lang.Long(0) | variable expression:newjava.lang.Long($V{FEE_SUM}.longValue()+$F{fee}.longValue())
其中参数fee类型为java.lang.long意味着javabean传参时实体类中定义:private long fee;
统计字段显示格式设置:选中控件-属性-Pattern:¤ #,##0.00
4:实现隔行变色
表格控件都要引用同一个样式如:‘style1’,选中style1右键添加Conditional style-在新的样式属性栏中找到:conditionexpression:
new Boolean($V{PAGE_COUNT}.intValue()%2==1) 同时选中Opaque然后设置背景颜色,即可。
代码实例
// 表格报表
@RequestMapping(value = "/report4")
public String report4(Model model) {
System.out.println("--------report");
// 报表数据源
JRDataSource jrDataSource = new JRBeanCollectionDataSource(Test.getList2());
// 动态指定报表模板url
model.addAttribute("url", "/WEB-INF/jasper/report2.jasper");
model.addAttribute("format", "pdf"); // 报表格式 pdf xls
model.addAttribute("jrMainDataSource", jrDataSource);
model.addAttribute("report_title", "我的报表");
model.addAttribute("Barcode", "1234");
return "reportView"; // 对应jasper-views.xml中的bean id
}
模板文件:类似这种两个文件
report2.jasper、report2.jrxml
当然最后java只调用第一个文件,第二个文件可以自行修改再生成第一个文件。
如果报表页面需要二维码,则需要这两个jar包:barbecue-1.5-beta1.jar、barcode4j-2.1.jar
最后,如何制作报表,则需要安装以下工具,这个版本比较低(功能较少)可以下载高版本的。