首页 期刊简介 最新目录 过往期刊 在线投稿 欢迎订阅 访客留言 联系我们
新版网站改版了,欢迎提出建议。
访客留言
邮箱:
留言:
  
联系我们

合作经济与科技杂志社

地址:石家庄市建设南大街21号

邮编:050011

电话:0311-86049879
友情链接
·中国知网 ·万方数据
·北京超星 ·重庆维普
经济/产业

信息类别

首页/本刊文章/第269期/网络技术/正文

发布时间

2005/2/18

作者

文/单文炳

浏览次数

6647 次

基于Excel对象的动态图表制作
  引言
  基于浏览器/服务器(B/S)架构的解决方案在越来越多的领域得到应用。通过使用ASP脚本,我们可以方便地访问各种数据库,生成与用户交互的动态页面。在显示动态页面中常会遇到统计图表的实现问题,通常的解决方法有三种:(1)使用客户端ActiveX控件,如Mschart;(2)使用Java Applet显示图形;(3)编程生成动态图片,然后把它发送到客户端。由于本文介绍的方法本质上是B/S模式和ActiveX控件相结合的图表制作新思路。所以本文在开头将比较系统地介绍B/S模式、ActiveX和ASP。然后才对ASP结合Excel制作图表的具体思路和方法作出完整的表述。
  B/S模式的介绍
  B/S模式即Brower/Server结构模式,分为三层。
  第一层为表示层,用户通过浏览器完成和后台的交互及最终查询结果的输出功能。
  第二层为具有ODBC接口的WEB服务器,属功能层,主要由服务器完成客户应用功能。
  第三层为数据层,根据客户的请求独立地进行各种运算。此模式下,客户端使用简单,免去了对用户的培训,而服务器则集中了所有的应用软件的开发、维护等工作。B/S模式具有传统C/S模式所不及的很多特点,如更加开放、与软硬件无关、应用扩充和系统维护升级方便等等,目前已成为企业网上首选的计算模式,原先在C/S下的很多软件都开始移植到B/S模式下。
  1、B/S模式的模型结构。B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的特点是安全、快捷、准确。后者则具有节省投资、跨地域广的优点。须视企业规模和地理分布确定。企业内部通过防火墙接入Internet,在整个网络采用TCP/IP协议。网络结构如图1所示。
  B/S模式是一种从传统的二层C/S模式发展起来的新的网络结构模式,其本质是三层结构C/S模式。
  2、B/S模式的工作原理。在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web页面形式显示出来。
  3、B/S模式的特点。B/S模式管理信息系统基本上克服了C/S模式管理信息系统的不足。
  B/S模式提供了一致的用户界面,B/S模式的应用软件都是基于Web浏览器的,这些浏览器的界面都很相似。对于无用户交互功能的页面,用户接触的界面都是一致的,从而可以降低软件的培训费用。
  B/S模式具有更强的信息系统集成性,在B/S模式下,集成了解决企事业单位各种问题的服务,而非零散的单一功能的多系统模式,因而它能提供更高的工作效率。
  B/S模式的优点是显而易见的,然而要实现它就需要使用当前流行的组件技术,基于Windows平台的程序开发,就会用到Microsoft的DCOM结构模型和ActiveX组件技术,如果客户要做跨平台的开发,如包括Unix和Windows两种平台的程序开发,就需要使用CORBA结构模型。
  ActiveX控件的介绍
  ActiveX是Microsoft提出的一种技术,它以COM(Component Object Model,组件对象模型)为基础,其中包括了OLE技术以及应用于Internet的多种技术。它使得不同的进程之间可相互通信,并且朝着多媒体方向发展。
  ActiveX是一种面向对象的组件系统,其中包括了组件软件的各个方面,有复合文档、自定义控制、OLE自动化、交互应用程序脚本、数据传送及其它分布式软件的相互作用。这些组件对象为用户提供了各种不同的功能,使得不同软件供应商提供的组件可在二进制级进行相互连接和通信。对象通过接口实现组件之间及组件与系统之间的相互用。
  使用ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。例如,StockTicker控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性。
  现在,已有1000多个商用的ActiveX控件,开发控件可以使用各种编程语言,如C,C++,下一代的Microsoft Visual Basic,以及微软公司的Visual Java开发环境Microsoft Visual J++。ActiveX控件一旦被开发出来,设计和开发人员就可以把它当做预装配组件,用于开发客户程序。以此种方式使用ActiveX控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程序的设计。
  ASP的介绍
  ASP英文全称为Application Service Provider,中文译为应用服务供应商。其特点可以归纳为以下几点:
  1、用户不仅实现了自己应用系统建设与维护业务的外包,而且将自己的信息系统运行平台托管给ASP;
  2、用户的信息系统运行平台放置在ASP内部,而不是在用户自身内部,所有的软硬件设施,以及相关应用系统均由ASP配置及维护;
  3、用户不拥有相关的软硬件设施及应用平台,只是集中于其内部业务的流程资源管理所需要的应用系统的使用,而用户所使用的应用系统,由ASP根据其业务的具体需要提供。
  应用服务的产品化:ASP所拥有产品的不再是具体的、单一的软硬件产品,而是根据不同行业用户而开发及实施的软、硬件业务系统平台,及其为用户所提供的各项技术支持及相关服务。
  ASP的主要业务集中于:根据相关行业的业务范围、业务流程以及资源管理需求,制订先进的系统方案,采用领先的软硬件技术,开发并实施应用环境及应用系统,提供给行业用户一个业务运行的标准系统平台。
  除提供标准业务运行平台之外,ASP还可根据不同用户的具体需求进行定制,使得各用户的业务运行及系统应用在统一的标准平台实现“私有化”。
  根据用户规模及其对用户内部IT环境和应用系统的要求,ASP还可为用户提供相关的技术支持(User Help Desk),相当于用户原有的内部IT维护部门的职能。
  在IT应用服务外包模式中,用户的信息系统运行是由承担外包业务的专业IT公司派出业务人员到其现场进行应用与维护服务,而ASP模式则是由ASP业务人员集中在ASP内部,为其众多的用户提供服务器与数据维护服务,并尽可能通过远程通讯提供桌面应用、网络与运行维护服务。
  绘图系统在B/S模式下的构建
  因为统计图表在美观和易于理解等方面有着表格所不具备的优越性,在社会生产、管理等领域中,用户需要按不同要求对有关数据做出统计,动态输出各种统计图,是这类解决方案的一个难点。所以这个问题具有一定的普遍性。目前,针对这个问题,主要有3种可行的解决方案。
  第一种:浏览器端安装使用图表控件如Mschart。这样做的优点是图形的生成在客户端,服务器端只执行查询,负载小;缺点是在客户端要安装和注册ActiveX控件,操作较为复杂,并且把客户端系统限制在Windows的范围内。而且使用Mschart控件的制作效果往往有些不尽人意,由此会考虑购买第三方开发的ActiveX图形组件,这样就会造成开发成本的提高。
  第二种:使用Java Applet显示图形。这样做开发难度较高,需要针对具体的应用要求编制Java绘图程序。采用Java Applet开发,客户端必须处理庞大的空间数据,这些大量的空间数据要在拥挤的网络上传输,速度上会很慢,而且用于显示图的控制又太少。再者,用Java Applet从底层开发绘图应用系统难度比较大,且开发周期长。
  第三种:通常是利用编程语言(VC、VB、DELPHI等)编制好DLL动态连接库,然后调用这些动态库来生成动态图,再把生成的图片发放到客房端,但这样实现起来比较复杂。
  本文的思路虽然也属于第三种方法,但不是通过编制DLL动态库来生成动态图,而利用具有强大作图功能的Microsoft Excel来生成动态图,从而使得实现起来比较方便,且操作灵活,效果完美。
  具体思路:
  1、建立一个Excel文件,里面包含两个工作表(命名为“chart”和“data”),在“chart”工作表上创建一个空图表,在空图表中添加与需要显示的数据组数量相等的系列,比如下例中在图表上需要显示两组数据,则在Excel中建立空图表时需建两个系列。此时可以把这个文件视为“图表模板”(Excel文件如图2所示)。
  2、在刚建立Excel文件中,对图表的显示格式进行设置,通常是设置应用中不需要经常变化的显示格式,当然也可以设置Excel图表的所有显示格式,因为以后还可以在程序中动态地对这些显示格式进行改变。因此,在某种意义上说,运用这种方法可以制作出任何效果完美的图表。
  3、制作页面且通过编程利用上面建立的Excel文件来生成动态图,并把生成的图片显示在网页上。
  实例:
  运行环境:Win2000+Office2000,数据库采用Access数据库。
  为了使读者更容易明白,给出本例的数据库中的表(如表所示):
  具体程序及说明如下:
<%@language=“VBScript”%>
<html>
<head>
<title>ASP结合Excel作图表</title>
<meta http-equiv=“Content-Type”
content=“text/html;
charset=gb2312”>
</head>
<body bgcolor=“#FFFFFF”
text=“#000000”>
<%
Dim i
Dim conn
Dim recSale
//创建ADO连接
Set conn=
Server.CreateObject“ADODB.Connection”)
//设置数据库驱动程序及数据库路径
conn.Open“DRIVER={Microsoft Access
Driver(*.mdb)};DBQ=”&Server.MapPath
(“demo.mdb”)
strSQL=“Select*from tbl_sale”
//打开数据库
Set
recSale=conn.Execute(strSQL)
Dim objExcel
Dim objWorkbook
//创建Excel应用对象
Set objExcel =
server.CreateObject("Excel.Application")
//打开图表模板
Set objWorkbook=objExcel.
Workbooks.Open(“e:\pstweb\bb.xls”) objExcel.DisplayAlerts=False
//取得chart工作表
Set sheetChart=
objWorkbook.Sheets(“chart”)  
//取得data工作表
Set sheetData=
objWorkbook.Sheets(“data”)   
Fori=1To4
//把从数据库中取出来的数据
//填到data工作表中
sheetData.Cells(i+1,1)=recSale.Fields(“season”)
sheetData.Cells(i+1,2)=FormatNumber
(recSale.Fields(“sale”),2,-1,-2,0)
sheetData.Cells(i+1,3)=FormatNumber
(recSale.Fields(“profit”),2,-1,-2,0)
recSale.MoveNext
Next
recSale.Close
Set recSale=Nothing
//设置系列的名字
Set objChart=sheetChart.ChartObjects(1)
objChart.Chart.SeriesCollection(1).Name=“销售额(万元)”  
objChart.Chart.SeriesCollection(2).Name=“盈利额(万元)”
//对系列进行赋值
objChart.Chart.SeriesCollection(1).Values=sheetData.Range(sheetData.Cells(2,2),sheetData.Cells(5,2))
//控制图例的显示格式
objChart.Chart.SeriesCollection(2).Values=sheetData.Range(sheetData.Cells(2,3),sheetData.Cells(5,3))
objChart.Chart.HasLegend=True  
objChart.Chart.Legend.Select
objChart.Chart.Legend.Height=74
objChart.Chart.Legend.AutoScaleFont=False
objChart.Chart.Legend.Font.Size=10
objChart.Chart.Legend.Top=73
//创建一个系列
Set rangeX=
sheetData.Range(sheetData.Cells(2,1),sheetData.Cells(5,1))
//对X分类轴进行赋值
objExcel.ActiveChart.SeriesCollection(1).XValues=rangeX
objChart.Activate
//生成动态图片
objExcel.ActiveChart.Export“e:\pstweb”+“.gif”,“GIF”
objExcel.quit
//显示生成的图片
Response.Write“<img src=e:\pstweb.gif>”  
%>
</body>
</html>
网页上显示的图片如图3所示:
  小结
  以上主要介绍了运用ASP结合Microsoft Excel的方法来实现一个简单图表的处理程序。在实际应用中,任何图表的显示类型和显示格式都可以通过本文介绍的思路及方法来实现,且可以编写一个通用的图表处理程序,在程序中设置好各项图表控制的控制接口,然后存为一个包含文件。在需要进行图表处理的页面上包含此文件,再通过图表处理程序中所设置的控制接口,把数据和图表控制要求传给图表处理程序,从而返回图表处理程序所生成动态图片的路径,这样就可以使得所编的图表处理程序更具有通用性和实用性。(□文/单文炳)
 
版权所有:合作经济与科技杂志社 备案号:冀ICP备12020543号
您是本站第 31440589 位访客