精华区 [关闭][返回]

当前位置:月光软件>>讨论区精华>>〖软件开发〗>>● ASP>>★ASP的技巧★>>引用Office>>ASP中使用Office2000中的图表控件(答:网友)

主题:ASP中使用Office2000中的图表控件(答:网友)
发信人: wuga(冰雨梦)
整理人: dongbao(2002-04-21 19:26:45), 站内信件
   前一阵为了做图表,查看了论坛中的所有文章,但大都是用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: 
wind.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 来注册该组件的方法,如果那位高手知道,请告诉我 [email protected] ,谢谢! 


附: 


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 

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  



----

因为我, 能相信, 爱你, 是真的, 爱你, 不会让你后悔。
寂寞的冬, 想你的夜, 王子与公主, 世界这分钟永恒。


爱的证据, 如潮水, 已成风。逃, 两个人的森林。
错过你, 错过爱。有你真的快乐吗? 一定可以, 曾经等待。
因为我, 能相信, 爱你, 是真的, 爱你。且行且珍惜。


MSN:[email protected]   QQ:92754            

[关闭][返回]






转载请注明:转载自 月光程序代码网 [ http://www.moon-soft.com ]