使用Office2000中的圖表控件猜你喜歡

ASP中使用Office2000中的圖表控件前一陣為了做圖表 , 查看了論壇中的所有文章 , 但大都是用Aspchart , ShortGraph等組件 , 這些組件多半都是國外開發要money的 。 如果你用office的MSChart , 往往作出的效果又差強人意 。 如果你使用過Office2000中Excel的圖表的話 , 應該被一流的效果所折服 。 想把他搬上你的網站嗎?沒問題 , 現在你也能通過ASP和VBScript來實現MicrosoftOfficeChart9.0的強大的功能和絕妙的效果 。
示例中使用ADO記錄集中的數據創建圖表 。 首先根據返回的記錄集數據創建以制表符分隔的字符串 , 然后通過SetData方法并使用此字符串設置圖表數據 。

源文件chart.asp:
<HTML>
<HEAD>
<METANAME="GENERATOR"Content="MicrosoftFrontPage4.0">
</HEAD>
<BODY>
<objectid=ChartSpace1classid=CLSID:0002E500-0000-0000-C000-000000000046style="width:80%;height:350"></object>
<objectid=ADOConnection1classid=CLSID:00000514-0000-0010-8000-00AA006D2EA4></object>
<scriptLanguage=VBScript>
SubWindow_OnLoad()
Dimrs,categories,values
categories=""
values=""
"打開連接執行sql查詢(建立“nwind.mdb”庫 , 并創建名為“CategorySalesfor1995”的表)
ADOConnection1.Open"DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ=c:\nwind.mdb"
Setrs=ADOConnection1.Execute("SELECT*FROM[CategorySalesfor1995]")
"對于每一字段記錄產生一個由制表符分隔的字符串
rs.MoveFirst
DowhileNotrs.EOF
categories=categories&rs.Fields(0).Value&Chr(9)
values=values&rs.Fields(1).Value&Chr(9)
rs.MoveNext
Loop
rs.Close
ADOConnection1.Close

【使用Office2000中的圖表控件猜你喜歡】 "刪去字符串末尾的分隔符
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生成的字符串設置系列的類型和值
Setc=ChartSpace1.Constants
ChartSpace1.Charts(0).SeriesCollection(0).SetDatac.chDimCategories,c.chDataLiteral,categories
ChartSpace1.Charts(0).SeriesCollection(0).SetDatac.chDimValues,c.chDataLiteral,values

"設置圖表工作區的標題 , 并將圖表工作區的圖例放置于工作區的右邊 。
ChartSpace1.HasChartSpaceTitle=True
WithChartSpace1.ChartSpaceTitle
.Caption="MonthlySalesData"
.Font.Size=12
.Font.Color="#FF0000"
.Font.Bold=True
Endwith

ChartSpace1.HasChartSpaceLegend=True
WithChartSpace1.ChartSpaceLegend
.Position=c.chLegendPositionright
.Font.Color="#009999"
.Font.Size=9
Endwith

"設置圖表類型(具體樣式見附錄)
ChartSpace1.Charts(0).Type=c.chChartTypeBarClustered
"軸的坐標格式、樣式(有坐標軸時才設)
WithChartSpace1.Charts(0).Axes(c.chAxisPositionBottom)
.NumberFormat="#,##0"
.Font.Size=9
Endwith

WithChartSpace1.Charts(0).Axes(c.chAxisPositionLeft)
.Font.Color="#0000ff"
.Font.Size=9
Endwith
endif

EndSub
</script>
</BODY>
</HTML>

以上程序在Win98+PWS下通過 。
通過以上的例程你可以根據你的需要 , 增加自己所需要的效果 , 一定能制作出極酷的統計圖表來的 , 需要幫助可以參見微軟的幫助文件(裝了Office2000就有)Msowcvba.chm以及MSDN在線幫助 。
有個缺點:客戶端好像也要裝Office2000才行 , 另外我還沒找到如何不安裝Office2000來注冊該組件的方法 , 如果那位高手知道 , 請告訴我richard@zhujie.org , 謝謝!

附:
ChartChartTypeEnumConstants圖表類型常數(轉至MSDN)
ConstantValue
chChartTypeCombo-1
chChartTypeColumnClustered0
chChartTypeColumnStacked1
chChartTypeColumnStacked1002
chChartTypeBarClustered3
chChartTypeBarStacked4
chChartTypeBarStacked1005
chChartTypeLine6
chChartTypeLineMarkers7
chChartTypeLineStacked8
chChartTypeLineStackedMarkers9
chChartTypeLineStacked10010
chChartTypeLineStacked100Markers11
chChartTypeSmoothLine12
chChartTypeSmoothLineMarkers13
chChartTypeSmoothLineStacked14
chChartTypeSmoothLineStackedMarkers15
chChartTypeSmoothLineStacked10016
chChartTypeSmoothLineStacked100Markers17
chChartTypePie18
chChartTypePieExploded19
chChartTypePieStacked20
chChartTypeScatterMarkers21
chChartTypeScatterSmoothLineMarkers22
chChartTypeScatterSmoothLine23
chChartTypeScatterLineMarkers24

推薦閱讀