日期:2009-05-09 浏览次数:20396 次
ASP中使用Office2000中的图表控件前一阵为了做图表,查看了论坛中的所有文章,但大都是用Aspchart,ShortGraph等组件,这些组件多半都是国外开发要money的。如果你用office 的MS Chart,往往作出的效果又差强人意。如果你使用过Office2000中Excel的图表的话,应该被一流的效果所折服。
想把他搬上你的网站吗?没问题,现在你也能通过ASP和VBScript来实现Microsoft Office Chart 9.0 的强大的功能和绝妙的效果。
示例中使用 ADO 记录集中的数据创建图表。首先根据返回的记录集数据创建以制表符分隔的字符串,然后通过 SetData 方法并使用此字符串设置图表数据。
源文件chart.asp :
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
</HEAD>
<BODY>
<object id=ChartSpace1 classid=CLSID:0002E500-0000-0000-C000-000000000046 style="width:80%;height:350"></object>
<object id=ADOConnection1 classid=CLSID:00000514-0000-0010-8000-00AA006D2EA4></object>
<script Language=VBScript>
Sub Window_OnLoad()
Dim rs, categories, values
categories = ""
values = ""
" 打开连接执行sql查询 (建立“nwind.mdb”库,并创建名为“Category Sales for 1995”的表)
ADOConnection1.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\nwind.mdb"
Set rs = ADOConnection1.Execute("SELECT * FROM [Category Sales for 1995]")
" 对于每一字段记录产生一个由制表符分隔的字符串
rs.MoveFirst
Do while Not rs.EOF
categories = categories & rs.Fields(0).Value & Chr(9)
values = values & rs.Fields(1).Value & Chr(9)
rs.MoveNext
Loop
rs.Close
ADOConnection1.Close
" 删去字符串末尾的分隔符
categories = Left(categories, Len(categories) - 1)
values = Left(values, Len(values) - 1)
" 创建一个系列
ChartSpace1.Clear
ChartSpace1.Charts.Add
ChartSpace1.Charts(0).SeriesCollection.Add
ChartSpace1.Charts(0).SeriesCollection(0).Caption = "Sales"
" 使用recordset生成的字符串设置系列的类型和值
Set c = ChartSpace1.Constants
ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimCategories, c.chDataLiteral, categories
ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, values
" 设置图表工作区的标题,并将图表工作区的图例放置于工作区的右边。
ChartSpace1.HasChartSpaceTitle = True
With ChartSpace1.ChartSpaceTitle
.Caption = "Monthly Sales Data"
.Font.Size = 12
.Font.Color = "#FF0000"
.Font.Bold = True
End with
ChartSpace1.HasChartSpaceLegend = True
With ChartSpace1.ChartSpaceLegend
.Position = c.chLegendPositionright
.Font.Color = "#009999"
.Font.Size = 9
End with
" 设置图表类型(具体样式见附录)
ChartSpace1.Charts(0).Type = c.chChartTypeBarClustered
" 轴的坐标格式、样式(有坐标轴时才设)
With ChartSpace1.Charts(0).Axes(c.chAxisPositionBottom)
.NumberFormat = "#,##0"
.Font.Size = 9
End with
With ChartSpace1.Charts(0).Axes(c.chAxisPositionLeft)
.Font.Color = "#0000ff"
.Font.Size = 9
End with
end if
End Sub
</script>
</BODY>
</HTML>
以上程序在Win98+PWS 下通过。
通过以上的例程你可以根据你的需要,增加自己所需要的效果,一定能制作出极酷的统计图表来的,需要帮助可以参见微软的帮助文件(装了 Office2000 就有)Msowcvba.chm 以及MSDN 在线帮助。
有个缺点:客户端好像也要装Office2000 才行,另外我还没找到如何不安装 Office2000 来注册该组件的方法,如果那位高手知道,请告诉我 richard@zhujie.org ,谢谢!
附:
ChartChartTypeEnum Constants 图表类型常数(转至MSDN)
Constant Value
chChartTypeCombo -1
chChartTypeColumnClustered 0
chChartTypeColumnStacked 1
chChartTypeColumnStacked100 2
chChartTypeBarClustered 3
chChartTypeBarStacked 4
chChartTypeBarStacked100 5
chChartTypeLine 6
chChartTypeLineMarkers 7
chChartTypeLineStacked 8
chChartTypeLineStackedMarkers 9
chChartTypeLineStacked100 10
chChartTypeLineStacked100Markers 11
chChartTypeSmoothLine 12
chChartTypeSmoothLineMarkers 13
chChartTypeSmoothLineStacked 14
chCh