[讨论] Jasperreport与birt的几个细节功能对

2020-05-27 作者: 围观:121 62 评论

BIRT与JasperReport均未比较常用的java报表工具,本文对比BIRT与JasperReport在数据分析处理、运行模式、报表设计、程序源等功能中的细节差别。
数据处理
BIRT和Jasperreport都是只支持数据展现,不支持报表的数据填报功能,即没有办法实现将数据回填到资料库中这一操作。对于国内企业来说,这算是一个不能容忍的功能缺陷,中国极少不需要数据录入操作的公司。因为国情需要,所有的国产报表系统工具都支持这一功能。
列印
Jasperreport有批量报表列印功能,但一般需要通过专门的编程实现批量报表列印;BIRT不支持批量报表列印。
BIRT列印方式中仅能对指定页数进行控制,不支持列印时进行页面设置、页边距调整等。
Jasperreport支持套打,需要一定编码;BIRT不支持套打。
运行模式
和国内很多报表工具不同,Birt和JasperReport都是採用设计器来设计报表,然后由运行组件来生成报表,其中,Birt的报表只能由设计器来生成,而JasperReport可以独立地由运行组件来生成报表,功能比较全面。
Birt的运行组件包括了全部需要的包,很占空间(将近100M),JasperReport的运行组件是做小模式的(2M),需要生成哪种格式的报表文件,就把那个格式所依赖的JAR包放入自己程序的lib中;
Birt比JasperReport要繁琐的多,所要创建的文件夹platform名字是被定死的。Birt运行的关键步骤是先通过一段步骤获得报表引擎,然后通过报表引擎建立不同的task来完成不同的报表操作。而JasperReport採用的是JasperRunManager类,由这个类的可以简单的实现各种报表生成。
在代码需求量上,JasperReport的代码明显比Birt要少,而中国式报表,如FineReport,所需代码量比所有的开源报表量都少。
报表设计
就报表设计而言,一般报表设计需要的数据分析元素,Birt和JasperReport都有。相对来说,JasperReport可以直接在报表上画线和矩形,灵活性更大一点。
Birt和JasperReport的报表都是xml形式,但是JasperReport比Birt多了一个「编译」的过程,既把报表xml文件编译为本地保存的.jasper文件(其实是把报表对象实例保存到了硬碟上),生成报表的时候,JasperReport直接载入.jasper文件而不需要再进行XML解析,性能比Birt略优。
到目前为止,Birt只支持从xml格式的报表模板来生成报表,而JasperReport可以脱离报表模板完全由程序在运行过程中通过API来画线、插入数据、生成报表。因为生成不同格式的报表在显示上有可能有出入,需要为不同的格式修改报表的某些属性,JasperReport支持动态修改报表属性,而Birt只能是为不同的报表格式创建多个报表模板文件。
数据源
Birt和JasperReport都支持从jdbc-connection、csv、xml等格式的数据文件读取数据。目前Birt有两种方式获得数据,一是自己和资料库建立连接来取得数据,二是从应用伺服器的资料库连接池中取得连接来检索数据,但是不管从哪里取得资料库连接,Birt都是根据报表文件中定义的sql语句来检索数据并生成报表,并不支持直接使用由应用程序生成的资料库结果集。
JasperReport则有更多的实现方式,一是使用应用程序传递给过来的资料库连接来检索数据,即使用报表文件预定义好的sql语句。二是支持把程序传入的资料库结果集来生成报表,结果集的格式可以是对象集合或者对象数组,其中对象可以是资料库的映射对象也可以是HashMap形式的数据,这样的话使用hibernate,iBatis等资料库持久层都没有问题了。三是针对一些特定的资料库持久层提供的检索功能,比如我们可以把hibernate的session对象作为参数,由JasperReport来执行报表文件中预定义的hql语句。但是JasperReport的SQL查询文本框不支持粘贴操作,也不支持参数化查询。
在预定义sql语句方面,Birt要比JasperReport方便,Birt支持一个报表文件定义多个sql语句和多个数据源,JasperReport不支持多个sql语句,但他可以通过子报表的方式解决这一问题。
FineReport报表系统——零编码做报表、多维图表、多源填报、许可权管理,完美兼容excel。报表免费下载

相关浏览推荐