ASP中使用Office2000中的圖表控件
-- Microsoft Office Chart 9.0 制作圖表
前一陣為了做圖表,查看了論壇中的所有文章,但大都是用Aspchart,ShortGraph等組件,這些組件多半都是國(guó)外開發(fā)要money的。如果你用office 的MS Chart,往往作出的效果又差強(qiáng)人意。如果你使用過Office2000中Excel的圖表的話,應(yīng)該被一流的效果所折服。想把他搬上你的網(wǎng)站嗎?沒問題,現(xiàn)在你也能通過ASP和VBScript來實(shí)現(xiàn)Microsoft Office Chart 9.0 的強(qiáng)大的功能和絕妙的效果。
示例中使用 ADO 記錄集中的數(shù)據(jù)創(chuàng)建圖表。首先根據(jù)返回的記錄集數(shù)據(jù)創(chuàng)建以制表符分隔的字符串,然后通過 SetData 方法并使用此字符串設(shè)置圖表數(shù)據(jù)。
源文件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 = ""
' 打開連接執(zhí)行sql查詢 (建立“nwind.mdb”庫,并創(chuàng)建名為“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]")
' 對(duì)于每一字段記錄產(chǎn)生一個(gè)由制表符分隔的字符串 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)
' 創(chuàng)建一個(gè)系列 ChartSpace1.Clear ChartSpace1.Charts.Add ChartSpace1.Charts(0).SeriesCollection.Add ChartSpace1.Charts(0).SeriesCollection(0).Caption = "Sales"
' 使用recordset生成的字符串設(shè)置系列的類型和值 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
' 設(shè)置圖表工作區(qū)的標(biāo)題,并將圖表工作區(qū)的圖例放置于工作區(qū)的右邊。 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
' 設(shè)置圖表類型(具體樣式見附錄) ChartSpace1.Charts(0).Type = c.chChartTypeBarClustered ' 軸的坐標(biāo)格式、樣式(有坐標(biāo)軸時(shí)才設(shè)) 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 下通過。
通過以上的例程你可以根據(jù)你的需要,增加自己所需要的效果,一定能制作出極酷的統(tǒng)計(jì)圖表來的,需要幫助可以參見微軟的幫助文件(裝了 Office2000 就有)Msowcvba.chm 以及MSDN 在線幫助。
有個(gè)缺點(diǎn):客戶端好像也要裝Office2000 才行,另外我還沒找到如何不安裝 Office2000 來注冊(cè)該組件的方法,如果那位高手知道,請(qǐng)告訴我 luo_zhenyu@netease.com ,謝謝!
附:
ChartChartTypeEnum Constants 圖表類型常數(shù)(轉(zhuǎn)至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 chChartTypeSmoothLineStackedMarkers 15 chChartTypeSmoothLineStacked100 16 chChartTypeSmoothLineStacked100Markers 17 chChartTypePie 18 chChartTypePieExploded 19 chChartTypePieStacked 20 chChartTypeScatterMarkers 21 chChartTypeScatterSmoothLineMarkers 22 chChartTypeScatterSmoothLine 23 chChartTypeScatterLineMarkers 24 chChartTypeScatterLine 25 chChartTypeScatterLineFilled 26 chChartTypeBubble 27 chChartTypeBubbleLine 28 chChartTypeArea 29 chChartTypeAreaStacked 30 chChartTypeAreaStacked100 31 chChartTypeDoughnut 32 chChartTypeDoughnutExploded 33 chChartTypeRadarLine 34 chChartTypeRadarLineMarkers 35 chChartTypeRadarLineFilled 36 chChartTypeRadarSmoothLine 37 chChartTypeRadarSmoothLineMarkers 38 chChartTypeStockHLC 39 chChartTypeStockOHLC 40 chChartTypePolarMarkers 41 chChartTypePolarLine 42 chChartTypePolarLineMarkers 43 chChartTypePolarSmoothLine 44 chChartTypePolarSmoothLineMarkers 45
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!