使用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

推荐阅读