利用office web component打造精品图表(一)

大家在编写ASP程序的时候,可能要对各
种指标以图形的方式显示出来。如果仅仅
是柱状图,可以采用画表格的方法。许多投票
程序多采用这种方法。如果是饼状图或从数据
库中检索数据后再显示,就有些困难了.办法
也有,自己可以封装excel来完成上述功能,或
者用deiphi做一个activeform传入参数,或者用php
来写,java也可以。当然,用一个比较成熟的图形
组件来完成更好一些。microsoft  office  web  
compoent非常不错。我在开发一个项目的时
候,用到了这个组件。

CHART.ASP程序。

<%  Option  Explicit  %>
<!--#include  file="adovbs.inc"-->
<HTML>
<HEAD>
<TITLE>柱状图的例子</TITLE>
<%
Function  ExportChartToGIF(objCSpace,  strAbsFilePath,  strRelFilePath)
Dim  strFileName
Randomize  
strFileName  =  Timer  &  Rnd  &  ".gif"
objCSpace.ExportPicture  strAbsFilePath  
&  "\"  &  strFileName,  "gif",  650,  400
ExportChartToGIF  =  strRelFilePath  
&  "/"  &  strFileName
End  Function

Sub  CleanUpGIF(GIFpath)
Dim  objFS
Dim  objFolder
Dim  gif
set  objFS  =  Server.CreateObject("Scripting.FileSystemObject")
set  objFolder  =  objFS.GetFolder(GIFpath)
for  each  gif  in  objFolder.Files
if  instr(gif.Name,  ".gif")  >  0  and  
DateDiff("n",  gif.DateLastModified,  now)  >  10  then
objFS.DeleteFile  GIFpath  &  "\"  &  gif.Name,  True
end  if
next
set  objFolder  =  nothing
set  objFS  =  nothing
End  Sub

%>
</HEAD>
<BODY  BGCOLOR="#FFFFFF">
<div  align="center">
<br>
<br>
<%
dim  sj1,sj2
sj1=Request.QueryString("s1")
sj2=Request.QueryString("s2")  

dim  objChartSpace
dim  objChart
dim  objSeries
dim  objConn
dim  objRS
dim  c
dim  series
dim  strChartAbsPath
dim  strChartRelPath
dim  strChartFile
dim  axis

strChartAbsPath  =  Server.MapPath("/xjsi-web/dcss/chart")
strChartRelPath  =  "/xjsi-web/dcss/chart"
'设置组件

set  objChartSpace  =  Server.CreateObject("OWC.Chart")
set  objChart  =  objChartSpace.Charts.Add
set  c  =  objChartSpace.Constants

objChartSpace.Border.Color="red"
'以柱状图显示
objchart.type=1
objChart.HasLegend  =  True'是否显示图例
objChartSpace.HasChartSpaceTitle=true  '显示标题
objChartSpace.ChartSpaceTitle.Caption  ="柱状图的例子使用office  web组件--www.ourfly.com中文技术网站"  
set  objConn  =  Server.CreateObject("ADODB.Connection")
objConn.Open  application("strconn")
set  objRS  =  Server.CreateObject("ADODB.Recordset")
set  objRS.ActiveConnection  =  objConn
objRS.CursorType  =  adOpenStatic
objRS.CursorLocation  =  adUseClient
objRS.Open  "select  dwsj,sum(jfrs)  as  jfrs  
from  dcss_do_jfgcfxb  where  dwsj>='"&sj1&"'  
and  dwsj<'"&sj2&"'  
group  by  dwsj  order  by  dwsj  asc"

set  objChartSpace.DataSource  =  objRS
'显示图例内容
objChart.SetData  c.chDimSeriesNames,  0,  "jfrs"
for  each  objSeries  in  objChart.SeriesCollection
objSeries.SetData  c.chDimCategories,  0,  "dwsj"
objSeries.SetData  c.chDimValues,  0,  "jfrs"
next

for  each  axis  in  objChart.Axes
axis.HasTitle  =  True
if  axis.Type  =  c.chCategoryAxis  then
axis.Title.Caption  =  "月份"
else
axis.Title.Caption  =  "人数"
end  if
next

strChartFile  =  ExportChartToGIF(objChartSpace,  strChartAbsPath,  strChartRelPath)
Response.Write  "<IMG  SRC="""  &  strChartFile  &  """>"  &  "<P>"
CleanUpGIF  strChartAbsPath

objRS.Close
set  objRS  =  nothing
set  objConn  =  nothing
set  objSeries  =  nothing
set  objChart  =  nothing
set  objChartSpace  =  nothing
%>
</div>
</BODY>
</HTML>
使用这个组件的注意事项:
1。在office2000的光盘上,有一个msowc.msi的可执行文件.OK
2。建议大家用visual  interdev6.0开发,代码的自动提示功能此时会发挥出极大的作用。

效果图如下:

posted @ 2008-03-28 14:37  Athrun  阅读(391)  评论(0编辑  收藏  举报