日期:2009-02-20  浏览次数:20959 次

    前一阵为了做图表,查看了论坛中的所有文章,但大都是用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