开源报表中,jasperreports做得相当出众。在web应用中,常利用它来实现查询统计的下载打印功能。在jasperreport中,提供了利用javabean做数据源的功能,为我们实现灵活多变的报表提供了强大的支持。
利用jasperreports的javabean做datasource,最简单也是最实用的是将数据处理后封装到集合类中(Collection接口下的所有子类都可以),并利用JRBeanCollectionDataSource返回可被jasperreports识别的数据源。注意的是,我们利用iReport做测试与实际中调用是有些差别的。在iReport中,我们写的javabean需要继承JRAbstractBeanDataSourceProvider,而实际中调用,不需要让javabean继承JRAbstractBeanDataSourceProvider,你只需要把封装好了的Collection利用new JRBeanCollectionDataSource(Collection)返回既可,这样就方便了我们在javabean中处理和从其他地方获取数据。需要注意的是new JRBeanCollectionDataSource(Collection)返回的类型是JRDataSource。
在报表生成方面,jasperreports依赖于其他的文件导出包。比如经常使用的导出excel功能,就需要额外的poi.jar,在实际中,可能在不同的子功能模块中会用到其他的jar包。具体的,可以参看jasperreports的在线文档:
http://jasperforge.org/sf/wiki/do/viewPage/projects.jasperreports/wiki/Requirements