FineReport报表和水晶报表的比较
FineReport报表软件针对复杂格式的报表数据及Web报表的展现,通过多源分片、不规则分组、双向扩展来轻松拖拽做复杂格式的报表,制作报表从此摆脱了复杂的SQL和表达式,不需要编程,大大提高了报表制作的效率。
相对于水晶报表(Crystal Report),FineReport报表无论是在报表设计,数据展现,还是表单,应用集成等方面,都具有明显的优势。
报表设计
在报表设计方面,FineReport报表工具的优势主要体现在以下几个方面:
-
多数据源
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)只能简单地支持某些固定的跨行运算,如累积值、比上期等,更复杂的跨行组计算只能事先编程准备数据。
报表展现和输出
-
类Excel的界面风格
FineReport报表工具的界面风格,是完全类似于Excel的,格线对齐的编辑方式,极大的便利了报表的设计和输出,并且单元格内属性比较*灵活,可以得到格式任意复杂的报表。
水晶报表(Crystal Report)均采用控件拖拽式绘制报表,这种方案完全没有体现表格的规律性,当表头复杂的时候,对齐非常繁琐。而且与分辨率相关,屏幕上对齐的表格,在网页上和打印时又无法对齐。
-
输入输出
FineReport报表支持单个或者批量导入Excel文件,这样可以由业务人员,事先画好表样,提高制作报表的效率,并且,批量导入,更加的减轻重复的工作。生成的报表文件可输出为HTML、不失真的PDF、Excel、Word、CSV、SVG和文本文件等多种样式。另外,还可生成内置的模板文件。
水晶报表(Crystal Report)无法支持导入Excel文件,最多只能从Excel读取数据。其生成的HTML一般只能支持IE;导出EXCEL时经常只有数据而丧失格式,个别工具完成得比较仔细,但也严重依赖于表格绘制时对齐的程度,生成的文本也只包括数据而丧失格式,无法支持字符终端的报表打印需求。
-
套打
FineReport报表采用底图描绘,绝对定位的方式完成套打表样的绘制,用户可将要套打的票据扫描进来作为背景图,用报表设计器进行数据的位置摆放,可以精确定位数据的位置。
水晶报表(Crystal Report)只能采用精确度量的方案,量好套打票据的尺寸来设置表格控件的大小,操作繁琐,效率很低。
-
分页打印,分栏以及其它打印控制
FineReport提供了全部的报表打印控制:按照分组或者其它任意的方式来进行强制分页,补足空行。
分页时标题可重复,不仅是上表头,表格较宽的报表,其左表头也可设置分页时重复显示。
数据可进行*分栏,较长的报表,可以按照行分栏,显示成多列;列数较多的报表,可以使用列分栏来多行显示到同一个页面当中。
水晶报表(Crystal Report),一般只能支持上表头重复,不可以进行强制分页,补足空行,分栏等操作。
表单
表单的回填是水晶报表(Crystal Report)完全不能支持的功能。FineReport支持基于纯HTML的表单回填,支持各种主流的浏览器。
-
编辑风格
表单提供普通文本编辑框、复选框、下拉列表框、下拉日历、文件上传等。
-
自动计算
表单可支持类似EXCEL的自动计算功能,程序根据用户的设置在前端生成JavaScript表达式完成自动计算。自动计算还可跨表,多sheet之间的相互运算。
-
数据一致性校验
支持对回填的数据进行合法性检查。
-
数据的扩展
允许报表单元格与数据库字段间任意对应,并有自动扩展的能力。支持任意格式的表单回填数据。
-
直接回填到数据库
用户填写的数据,都直接存储到数据库当中,无需中间环节。
-
多级汇总填报
表单的报表同时还是个统计表,单元格数据可以有不同的来源和去向,这样可以先从下级机构汇总出数据再加以补充修改后填写到上级数据库中。
FineReport报表,其制表效率十倍于以国外产品为代表的传统报表工具。
对比点 | FineReport | CrystalReport | |
---|---|---|---|
应用集成 | 后台的环境支持 | 纯JAVA,全支持 | 个别产品只支持Windows |
前台的环境支持 | 纯HTML,全支持 | 一般仅支持IE | |
J2EE的应用服务器管理 | 嵌入应用,可充分利用应用服务器各项能力 | 独立服务器,应用服务器能力不可利用 | |
J2EE的WEB部署 | 与应用统一部署 | 单独安装部署,操作繁琐 | |
J2EE的应用接口 | 丰富齐全,结合紧密 | 通过网络协议,力度不足,统计图常采用古老的CGI方式 | |
Java Application集成 | 支持 | 非纯JAVA的不支持 | |
.NET的应用集成 | 支持,独立服务 | 支持 | |
页面的集成 | 完全随意嵌入 | 独立门户,很困难 | |
用户权限控制 | 与应用程序一致 | 独立机制很繁琐 | |
IDE集成能力 | 有限支持 | 不支持 | |
并发能力 | 较强,4万单元格表在512M内存可并发50个以上 | 基础程序对内存要求很高,并发数较少 | |
数据设计 | 多数据源(集) | 直接 | 间接支持 |
完全分组(多层) | 支持 | 支持,较繁琐 | |
完全交叉(多层) | 支持,无须专门处理 | 支持,用专门的交叉模型 | |
不完全分组/固定行列 | 支持 | 编程准备数据 | |
上下分片 | 支持,上下格式可不一致,固定变动混合 | 格式一致的可编程准备数据,否则必须拼子表完成 | |
左右分片 | 支持,固定变动混合,直接运算性能高 | 固定列的可编程准备数据,采用DB叉乘性能很差 | |
跨行组运算 | 支持,随意通用 | 固定的简单跨行运算,跨组不支持 | |
独立格运算 | 支持,随意通用 | 固定几种运算,来自DB的要专门处理 | |
主从报表 | 无须子表概念即可完成 | 须用子表,数据无法沟通 | |
子表 | 多层任意,格线可对齐可缩放,横纵向均可自动摆位 | 一般两层,横向表不可自动摆位 | |
参数与宏 | 均支持 | 仅支持参数 | |
报表展现 | 基本方案 | EXCEL网格式,方便快捷 | 控件式,对齐繁琐 |
导入EXCEL | 支持 | 不支持 | |
套打绘制 | 底图描绘 | 精确度量 | |
报表输出格式 | 标准HTML,PDF,word完全不失真的EXCEL,带格式文本 | PDF,特殊HTML,丧失格式的EXCEL,无格式文本 | |
统计图输出格式 | GIF,JPG,PNG | GIF,JPG | |
打印分页分栏 | 横纵向均可,强制分页 | 仅支持纵向,且不可分栏 | |
其它打印控制 | 一纸多页,补空行,缩放 | 缩放 | |
表单 | 编辑风格 | 文字编辑、下拉选择等 | 不支持 |
自动计算 | 支持 | ||
合法性检查 | 支持 | ||
数据库对应 | 随意自动,行/列/交叉均可 | ||
多级汇总填报 | 支持 |
部署和应用集成
-
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随意嵌入到页面中,常常必须带出其产品本身的报表管理界面,难以做到无缝嵌入。