多语言展示
当前在线:1106今日阅读:195今日分享:41

水晶报表和FineReport的比较

水晶报表(Crystal Report)和FineReport报表无论是在报表设计,数据展现,还是表单,应用集成等方面,都有明显的区别,本文列举一下这些区别,供报表使用者们借鉴。
工具/原料
1

FineReport(下载地址:FineReport官网)

2

水晶报表(需要到sap官网上填写试用申请,所以下载地址不详)

与水晶报表的功能对比
1

1、报表设计方面【多数据源】FineReport报表设计天然支持多数据源(集),同一张报表的数据可同时来自多个数据表,多个不同的数据库,或者多个不同的用户自定义数据视图,然后在报表中可直接相互运算形成最终的报表。并且连接数据源的方式也多种多样,支持JDBC,JNDI数据源,如Oracle,DB2,SQLServer,MySQL等主流的数据库,自定义的程序数据源,文本数据源,Hibernate数据源,Remedy等等,同时数据源具有无限的扩展性,可以支持WebService,SOA等标准的数据。水晶报表(Crystal Report)在理论上只支持单数据集,对多集的支持依赖于数据库的运算能力(叉乘与联合等或写存储过程),多库一般难以支持。另外一种处理方式,就是将多数据源先变相整理成单一数据源,然后再进行其它操作,并不是真正意义上的多数据源。【分组的调整,不完全分组】分组是报表数据当中,最常见的方式。FineReport报表工具的分组,是建立在单元格的基础之上,因此删除分组,更改分组字段等操作,就只需要对单元格进行操作,与报表内其它的数据无关。另外,在很多情况下,数据并非枚举式的完全分组,而是一些固定行列,或者按段分组等形式,FineReport报表提供了用户自定义分组,只需要添加一些条件,即可达到不规则分组的目的。水晶报表(Crystal Report),所有的数据都被划分在条带状的模型当中,删除分组时会将相关的分组汇总单元一并删除,调整分组字段只能删掉重建,整个操作比较繁琐,且会导致重复工作。而不规则分组,在Crystal Report当中,则仅仅只是修改组名,无法修改其它跟随数据的计算。【数据扩展和交叉表】FineReport报表工具的数据扩展,是双向的,也就是行列对称,横纵方向能力一致,可以方便地制作交叉报表(多层),可同行式表一样制作复杂表头。水晶报表(Crystal Report)制作交叉报表的方式,是采用专门的交叉表模型,其表头是按照向导自动生成的,缺乏灵活性。【报表分片】复杂报表当中,报表分为多片的现象非常常见,即整个报表是一个大的规则的报表,但是实际上可以分为多个不规则的小区域,各个区域之间看似没有联系,但是数据之间实际可以相互关联。FineReport由于支持多数据源,以及数据的行列对成扩展,因此支持报表的各片独立重复或者相互运算,并且允许固定和变动分片的混合。水晶报表(Crystal Report)的单表模型不能支持分片。对于分片的报表,一种处理方法是事先编程准备数据,另一种则是靠子报表拼接来完成。处理相当繁琐,并且这两种处理方法也并非每次都能够达到要求,设计出需要的报表格式。【跨行组运算】报表中常常需要有跨行组的运算,如比上期、比去年同期等。FineReport报表的单元格层次坐标概念可以精确地引用任何一个扩展之后的单元格,然后通用地写出表达式进行这些跨行组运算。水晶报表(Crystal Report)只能简单地支持某些固定的跨行运算,如累积值、比上期等,更复杂的跨行组计算只能事先编程准备数据。

3

3、表单表单的回填是水晶报表(Crystal Report)完全不能支持的功能。FineReport支持基于纯HTML的表单回填,支持各种主流的浏览器。【编辑风格】表单提供普通文本编辑框、复选框、下拉列表框、下拉日历、文件上传等。【自动计算】表单可支持类似EXCEL的自动计算功能,程序根据用户的设置在前端生成JavaScript表达式完成自动计算。自动计算还可跨表,多sheet之间的相互运算。【数据一致性校验】支持对回填的数据进行合法性检查。【数据的扩展】允许报表单元格与数据库字段间任意对应,并有自动扩展的能力。支持任意格式的表单回填数据。【直接回填到数据库】用户填写的数据,都直接存储到数据库当中,无需中间环节。【多级汇总填报】表单的报表同时还是个统计表,单元格数据可以有不同的来源和去向,这样可以先从下级机构汇总出数据再加以补充修改后填写到上级数据库中。

4

4、部署和应用集成【WEB部署】FineReport报表工具的服务程序以JAR包形式出现,可与应用程序统一打成包一起部署在应用服务器上,安装非常轻松。水晶报表(Crystal Report)的独立服务器方案需要单独安装,报表文件也须单独部署,无法和应用程序一起更新。【环境的支持】FineReport报表采用纯JAVA开发,无论报表设计器还是服务器均支持所有可部署JDK的操作系统、有JDBC接口的数据库,特别对于UNIX/LINUX的支持与Windows是完全一样的。而非JAVA的报表工具在这方面要困难得多。【丰富的API接口】FineReport报表工具向应用程序员提供了结构清晰,丰富的JAVA API调用,可以对报表进行扩展和深度控制。水晶报表(Crystal Report)采用独立服务器方案,应用接口通过网络协议完成,接口数量稀少、控制力度弱,而且严重影响性能。统计图等HTML外置资源还常常采用原始的CGI方式,会在文件系统中留下难以管理的临时文件。【页面的集成】FineReport报表生成的HTML可在应用页面(JSP)中随意嵌入摆放,对从浏览器端完全看不出集成了第三方产品。水晶报表(Crystal Report)均有自己独立的门户机制,很难将生成的HTML随意嵌入到页面中,常常必须带出其产品本身的报表管理界面,难以做到无缝嵌入。

推荐信息