日期: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