水晶报表(Crystal Report)和FineReport报表无论是在报表设计,数据展现,还是表单,应用集成等方面,都有明显的区别,本文列举一下这些区别,供报表使用者们借鉴。
工具/原料
FineReport(下载地址:FineReport官网)
水晶报表(需要到sap官网上填写试用申请,所以下载地址不详)
与水晶报表的功能对比
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)只能简单地支持某些固定的跨行运算,如累积值、比上期等,更复杂的跨行组计算只能事先编程准备数据。
2、报釉涑杵抑表展现和输出方面【类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),一般只能支持上表头重复,不可以进行强制分页,补足空行,分栏等操作。
3、表单表单的回填是水晶报表(Crystal Report)完全不能支持的功能。FineReport支持基于纯HTML的表单回填,支持各种主流的浏览器。【编辑风格】表单提供普通文本编辑框、复选框、下拉列表框、下拉日历、文件上传等。【自动计算】表单可支持类似EXCEL的自动计算功能,程序根据用户的设置在前端生成JavaScript表达式完成自动计算。自动计算还可跨表,多sheet之间的相互运算。【数据一致性校验】支持对回填的数据进行合法性检查。【数据的扩展】允许报表单元格与数据库字段间任意对应,并有自动扩展的能力。支持任意格式的表单回填数据。【直接回填到数据库】用户填写的数据,都直接存储到数据库当中,无需中间环节。【多级汇总填报】表单的报表同时还是个统计表,单元格数据可以有不同的来源和去向,这样可以先从下级机构汇总出数据再加以补充修改后填写到上级数据库中。
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随意嵌入到页面中,常常必须带出其产品本身的报表管理界面,难以做到无缝嵌入。