《国内报表设计器的分析》由会员分享,可在线阅读,更多相关《国内报表设计器的分析(6页珍藏版)》请在金锄头文库上搜索。
1、国内报表设计器的分析本人对报表设计器有些兴趣,于是到处搜集资料,写下了一些关于国内的报表设计器的分析,望高手指点。首先分析中国国内的打印报表市场。有人研究了国内报表工具的市场容量(具体见 http:/ ),应该有 20 亿元。只是开发商竞争激烈,很多无自主开发的核心技术,而且中国信息化水平不高,是的实际市场缩水,但需求是一直存在的。在未来非常长的时间内,办公无纸化不会普及,打印时刻进行,而且工作量不小,打印模板占整个信息化系统的很大一块,甚至是关键的模块,而且国内打印格式千百万化,用户需求经常改变,因此若没有良好的打印模板工具,实施打印模块的难度是超出想象的,因此信息系统开发商是非常需要良好的
2、打印工具。国内已经存在的不少打印工具提供商,在此对其主要的几个厂商进行分析水晶报表 (Crystal Reports)是加拿大 Crystal Decisions 公司出品报表分析与生成软件,历史比较长,使用的比较广泛,原先是作为微软 OEM 绑定到 VB 中,但现在微软放弃了她的绑定,而且其产品有点跟不上时代,因此有人评价她有点江河日下。Style Report(中文网址 http:/ ),源自国外的纯JAVA 的报表系统,报表设计器的操作演示没看到,在她的学习中心只看到几张模糊的图片,她的设计器是拖拽控件的设计模式,数据源的定义还是基于 SQL 语句查询数据库的,和其他的设计器没什么本质区
3、别。她的报表的 HTML 输出质量很好,非常适合 Web 环境。Developer Express 公司(网址 http:/ ),是一个相当有名的第三方软件厂商,制造了大量的优良的图形化软件,其中针对打印的有 XtraReports 控件,其中包括一个打印模板设计器,根据其官方网站介绍的情况和本人亲自下载试用的体验,对其打印控件的了解如下1功能强大,支持的报表元素类型不多,报表样式控制不错2设计器界面比较专业3在一个大部分报表工具都存在的问题,数据源设计不完善,还需要编写程序向打印控件提供数据4计器中的打印的元素都是一个个 Windows 控件,因此当报表的包含的元素很多,结构复杂时,无论设计
4、还是运行报表都是耗费大量的计算机系统资源的,而且影响运行速度,因为单个的 Windows 控件要占用不少的系统资源。5该报表工具在国内应用不多。FastReport(网址 http:/www.fast- ),是一个俄国人开发的报表系统,报表设计器的图形化用户界面做得非常精致,她是典型的控件拖放的设计模式。报表分为几个大块(Band),这些块区分为页眉,表身和页脚,其中只有一个页眉和页脚,可以有多个表身。而所有的报表元素分布在这些块上面,因此这种报表的页面模型是两层,对于复杂的报表则可能过于简单。她支持的页面元素类型比较多,报表数据源还是普通的基于 SQL 查询的二维表格方式。FastRepor
5、t 提供一个版本 FreeReport,她是 FastReport 的旧的低级的版本,但提供所有源代码,因此很多公司借助她来进行 Web 报表的开发。一般的做法为首先使用其提供的报表设计器设计报表,文件保存到 Web 服务器,然后后台页面程序( 例如 ASP 或 JSP)查询数据库获得数据,然后拼凑 JavaScript 或 VBScript 等客户端脚本代码文本随着 HTML 代码发送到客户端,客户端的 IE 页面嵌入 FreeReport 控件,而客户端脚本代码向该控件填充数据,然后控制它进行打印。这种报表开发模式非常麻烦,当用户需求经常改变,程序员们只有疲于奔命的修改后台程序。国内比较先
6、进的报表系统,个人认为是润乾报表,她是北京润乾软件技术有限公司(网址 http:/ )开发的报表系统,全部采用 Java 开发,她的设计器采用类似 Excel 样式的表格设计方式,她的报表模型比较先进,包括报表排版模型,报表参数和宏定义等概念。演示效果不错。她的数据源的定义有内建数据集,相当于在报表系统中建了一个小型关系型数据库,保存表结构和数据。报表样式设计器比较不错,样式控制丰富,自主开发达到这种水平不容易。杰创网络报表是杭州杰创软件有限公司( http:/)的主打产品,它一般简称为杰表。它技术比较先进,完全用 Java 实现,兼容 j2ee 平台。它的报表设计器是用 Java 写的,它的
7、设计模式总体上是基于控件拖放,它没有 Band 的概念,报表设计界面直接分为页眉,主体和页脚,用户可以在在界面上拖放操作放置表格控件,但表格控件内部却是类似 Excel 的电子表格设计模式,因此它的设计器的设计模式实际上是控件拖放和电子表格的结合。杰表作为 Web 报表,可以输出比较好的 HTML 页面,它的图表输出用 Flash 来展现,它还实现了数据钻取(在报表中点击某个链接可以显示另外一张相关的报表)。中创软件(网址 http:/ ),是一个中间件厂商,其中报表工具是其一个重要产品。她是针对 B/S 环境下的报表工具,看看一些报表模板编制的演示,她是采用类似 Excel 的排版方式。数据
8、源的定义采用普通的数据集,使用 SQL语句查询数据库获得二维表格,对多数据源则使用某些字段进行关联。Grid+Report 报表设计器是仁龙软件(http:/ SQL 语句通过 ADO 查询数据所得,因此数据源只是一个二维表格, GUI 设计器比较专业,支持的报表元素类型不多。设计器提供了比较完整的编程模型,好像还不错的样子。上海炎鼎软件(网址 http:/ )的数巨报表,核心的报表设计器是基于俄国的 FastReport 开源版本 FressReport,数据源定义还是基于 SQL查询的二维表格,和其他厂商没什么本质区别。深圳明宇科技(网址 http:/ )旗下有如意报表,和炎鼎的数巨报表同
9、质化严重,因为他们两个的核心设计器是基于俄国的 FastReport,同时运行如意报表设计器和 FastReport 的报表设计器,可以发现两者无论是用户界面还是操作方法都惊人的相似。数据源的定义和运行环境都和数巨报表没什么本质区别。微软报表服务是新出的产品,它背靠强大的微软和 SQLServer 服务器而在报表市场中异军突起,来势汹汹。本人首先进入微软的 MSDN 网络图书馆 MSDN Library Servers and Enterprise Development SQL Server Reporting Services 的目录下面,这是报表服务的用户手册,本人英语不好,勉强看了它的
10、几篇介绍文章,往后就看不下去。本人还下载了报表服务评估版下载安装了其中的客户端。由于它的服务器端需要 SQLServer2000Spa,本人机子只有 MSDE2000,装不了服务器端,再说本人暂时对报表设计器和报表原理感兴趣,所以没装服务器端程序。整个报表服务概念非常庞大,覆盖了整个报表的生命周期,包括了报表设计,安全,管理和运行。在此只重点说说报表的运行原理和报表设计器。 实际生产运行中,报表服务系统需要配置一个报表 Web 服务器,将报表定义文件放好,数据库连接配好,然后用户就可以在客户端的 IE 地址栏中敲入报表页面URL 就可访问报表了,因此报表服务算是一个纯粹的 Web 报表解决方案
11、了,非常适合 B/S 系统。但目前不知如何在 C/S 系统中使用报表服务。报表定义文件是一个扩展名为 RDL 的 XML 文档。它保存了报表的样式定义和数据源的定义,是微软自己定义的一种描述报表定义的 XML 文档,结构是公开的,因此第三方厂商可以编写兼容报表服务的报表设计器。微软使用自己的 VS.NET 集成开发环境来设计报表,相信绝大部分人还是用 VS.NET 来设计报表。微软提供的报表设计器是基于 VS.NET 的,因此若要设计报表则必须安装昂贵的VS.NET 集成开发环境,对报表设计器的广泛应用有所限制。其实私底下用用盗版的也没什么风险,若在公司里大量使用盗版的则微软迟早会找上门。微软
12、做的软件向来好用,它的报表设计器也相当专业,它采用控件拖拽的设计模式,但表格内部则采用类似 Excel 的编辑方式。目前的报表设计器支持文本框,线条,表,矩阵,矩形,列表,图像,子报表和图表。好像不支持条形码。文本框也不支持行间距和字符间距。但报表元素所有的属性都支持表达式。矩阵实际上是交叉报表,是处理复杂的中国式报表的基础,但具体怎么使用则不清楚。报表设计器的程序文件安装在 C:Program FilesMicrosoft SQL Server80ToolsReport Designer ,其中 Microsoft.ReportingServices.Designer.dll 是报表设计器的
13、主程序。使用Reflector 查看它的反编译代码,可以看到,其实所有的报表元素都是一个个Windows 控件,这点和 DeveloperExpress 的 XtraReports 一样。在报表设计器中使用 Windows 控件来实现页面元素有些性能问题。大家都知道 Windows 控件是很消耗系统资源的,因为其中涉及到了窗体句柄这种重量级的句柄。当报表复杂,里面存在数百个页面元素时,报表设计器需要动态的加载数百个控件,如此启动和操作都比较慢,而且占用大量内存(这种事我以前干过,有体会)。而俄国的 FastReport等类似报表工具则是自己绘制报表元素的,因此没有这种问题,加载和编辑复杂报表不
14、会很慢。 在数据源定义方面,根据微软提供的 RDL 的 XML 样式定义,一个报表存在若干个 DataSet 的节点,DataSet 节点提供一个 Query,其中定义了一个 SQL 语句,DataSet 还提供若干个字段,这些字段和 Query 的 SQL 查询结果的字段一一对应。因此个人看来 DataSet 实际只是定义了一个源自数据库的二维表格,一个报表内可以定义多个 DataSet,当这些二维表格之间发生关联时如何处理我这个初学者就猜不出来了。本人觉得报表服务和其他报告工具类似,是基于 SQL 查询的,数据源结构是两层。这在报表设计器设计数据源的操作上体现出来了。它的数据源设计界面实际
15、上是一个 SQL 查询设计器,无论如何操作,最终结果都是一个 SQL 查询语句,包括普通SQL 查询语句,表查询和存储过程三种类型。SQL 查询语句执行的结果肯定是一个二维表格。报表设计器使用拖拽操作来简化数据源的绑定,一般的旁边有个字段窗体,列出了所有的 DataSet 的字段。将某个字段拖拽到某个报表页面元素上面,若这个页面元素为文本框则设置它的文本值使之绑定到指定的字段,否则会在拖拽的位置新增一个文本框并绑定到指定字段。此外还有一些其他的报表厂商,由于应用不广泛或本人不了解,在此不再说明。 以上说明的这些厂商分为国外厂商和国内厂商。两类有着各自的特点。国外厂商本身实力强大,技术先进而成熟,都具有自主知识产权,但有某些地方不大适应中国国情,但这个问题国外厂商迟早会解决的。而国内厂商实力弱小,技术相对有些落后;而没有自主知识产权的厂商则更视为草根公司。因此总体上国外厂商在市场中处于强势地位,占据了大部分市场。国内厂商迫切需要发展,而且急需比较先进的自主知识产权。 以上厂商提供的报表设计器按照操作模式可以分为两类:基于控件拖放的设计模式和基于类似 Excel 电子表格的设计模式。基于控件拖放的设计模式实现起来比较