日期:2010-08-15  浏览次数:21531 次

  引:Web程序开发中,经常需要从数据库表文件中提取数据,并对大批量的数据进行分析比较,此时最常用也是最直观明了的表现方法莫过于绘制图表。

  ASP擅长服务器端的Web编程,操作后台数据库更是它的强项。但是用ASP制作实时数据库图表有点困难,因为ASP本身并不支持图表功能,只能借助第三方控件进行开发,如VB的MSChart 控件。而微软推出的实时数据库图表制作组件—— O W C(Microsoft Office Web Components),为在Web中绘制图形提供了灵活的同时也是最基本的机制。通过在ASP页面中调用OWC,我们可以轻松地绘制出各种类型的实时图表。

  本文同时介绍了一种方法,就是将在ASP中生成的图表转换成图片文件保存在服务器上,这样用户最终看到的是GIF图片格式的图表,可避免直接输出动态图表到客户端时有可能带来的一系列问题。同时,本文还介绍了一种简单而迅速地移走过期GIF 图片的方法。

  下面我们会用一个具体的实例来说明以上的内容。

  程序的测试环境为:Windows 2000Server +IIS5.0+Access+IE5.5中,要运行下面的ASP 程序,请将下面的代码Copy,保存到你的一个虚拟目录中,在这个虚拟目录中建立一个子目录tmp(你可能修改代码中的路径以符合自己的路径),在IIS中设置read权限即可,注意在Windows 2000 Server 上你必须设置此tmp目录对IUSR_servername用户至少有Change 的权限。

  ⒈OWC支持近50 种图表类型,包括曲线图、折线图、柱状图、面积图、雷达图等,并给指定显示图表是否带数据点。

  ⒉ 可以灵活设置图表的各个元素,包括设置图表标题、左标注、下标注、图例及输出图片的大小等;并可对所有显示的文字指定字体、字号、颜色和字形。

  ⒊同一张图表中显示2 条以上的曲线,实现数据对比显示。

  尽管OWC的相关文件很零散,但是安装过程很简单。我们需要一个正版授权的Office 2000,然后在Web服务器上运行setup程序。选择定制安装,在工具标题下,只选中Web组件选项。当然,我们也可以在Web服务器上安装Office 2000的完整版本,其中自然也就包含了Web组件。接着,Setup程序顺序地完成其它工作,包括组件注册。

  OWC的制图操作是在一个图表空间进行的。一个图表空间可以包含一个或多个图表,每个图表都可能包含一个或多个数列,每个数列都可以包含一个或多个数据点。根据这个原理,首先创建一个图表空间对象,然后用它的Add 方法向图表空间的图表集合中增加一个图表。进行组件调用时,在ASP 文件中加入如下代码即可:

  s e t c h a r t = S e r v e r .CreateObject("OWC.Chart")

  chart.clear

  set ochart=chart.Charts.Add

  set oconst = chart.Constants

  最后一行代码的目的是为了引用方便起见:图表空间有一个Constants属性,其中包含所有相关图表函数中使用的列举常数;每次想要引用一个常数时,就可以键入o c o n s t 而不是o b j C h a r t S p a c e .Constants,这样效率会更高,至少从时间上讲是这样。关于常数的完整描述,我们结合下面图表元素一起介绍。

  图表标题描述图表的标题(图1)。本标题可以位于图表的上方、下方、左方或右方。

  ASP

  oChart.HasTitle=true (指定是否显示图表标题)

  oChart.Title.Caption=“预计与实际销售额” (指定显示的内容)

  oChart.Title..Position =“Center”(指定位于图表的位置)

  set fnt=ochart.title.font

  fnt.name=“黑体”(指定图表标题的字体)

  fnt.size=“10”(指定图表标题的字号)

  fnt.color=“#000000”(指定图表标题的颜色)

  fnt.bold=true(指定图表标题的字形——加粗)

  fnt.italic=true(指定图表标题的字形——斜体)

  数值(Y)轴标题是用于描述数值轴度量内容的标题。

  s e t a x = o c h a r t . A x e s ( o c o n s t .chCategoryAxis)

  ax.hastitle=true (显示数值轴标题)

  ax.Title.Caption= “销售额(单位:百万)”(设置数值轴标题的内容)

  set fnt=ax.title.font (以下为设置数值轴标题的字体、字号、颜色、字形)

  fnt.name=“黑体”

  fnt.size=“10”

  fnt.color=“#000000”

  fnt.bold=true

  fnt.italic=true

  数值(Y)轴标志也称为刻度线标志。这些标志描述了数值轴上的度量值。

  ax.MajorTickMarks = oconst.chTickMarkNone(不显示数值轴主要刻度线)

  ax.MajorGridlines.Line.Color ="white" (设置指定坐标轴上主网格线的颜色和线宽)

  ax.MajorGridlines.Line.Weight = 5

  分类(X)轴标题它是用于描述分类轴绘制内容的标题。

  s e t a x = o c h a r t . A x e s ( o c o n s t .chAxisPositionBottom)

  ax.hastitle=true(显示分类轴标题)

  ax.Title.Caption= “季度”(设置分类轴标题的内容)

  set fnt=ax.title.font(以下为设置分类轴标题的字体、字号、颜色、字形)

  fnt.name=“黑体”

  fnt.size=“10”

  fnt.color=“#000000”

  fnt.bold=true

  fnt.italic=true

  分类(X)标志也称为刻度线标志。这些标志显示了分类轴上的分类名称。分类是由图表中每个数据系列的一个数据点构成的一组相关数据点。

  a x . P o s i t i o n = o c o n s t .chAxisPositionBottom (指定分类标志的显示位置,对有些图表显示类型,该设定不起作用。指定图表显示类型为折线型时可看到设定的效果)

  分类标志显示内容的设置见“数据标志”。

  图例为图表中数据系列或分类指定的图案或颜色标示。

  ochart.HasLegend=True(显示图例)

  oChart.Legend.Position = oconst.

  chLegendPositionLeft (设置图例的位置在左边,位置可修改)

  系列名称是一个名称,用于描述构成一个数据系列的一组相关数据点。系列名称显示在图例项标识旁的图例中。在前面的图表示例中,“预计”和“实际”都是对应于图表中数据标记的系列名称。

  set fnt=oChart.Legend.Font (以下为设置系列名称的字体、字号、颜色、字形)

  fnt.name=“黑体”

  fnt.size=“10”

  fnt.color=“#000000”

  fnt.bold=true

  fnt.italic=true

  数据标志它是用于提供有关数据标记附加信息的标志,而其中的数据标记则代表单个数据点或值。对于不同的图表类型,数据标志可以显示值、数据系列或分类的名称、百分比,或者显示这些项的组合。

  set oseries(i)=oChart.SeriesCollection.add ' 生成一条series 曲线

  with oseries(i)

  .DataLabelsCollection.Add(在指定系列中添加数据标志)

  .caption=