当前位置:首页  >  报表工具专题  > 

Jasperreport与birt的几个细节功能对比

作者:finereport

浏览:4,591

发布时间:2023.7.31

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语句,但他可以通过子报表的方式解决这一问题。

管理驾驶舱指南,业务指标,数据分析报表需要展现大量的数据和文字,提高信息传递的效率

报表工具产品更多介绍:www.finereport.com


在线客服

电话咨询

技术问题

投诉入口