帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
ASP中使用Office2000中的图表控件
作者: 发布时间:2005-03-12 来源:
 -- Microsoft Office Chart 9.0 制作图表

    前一阵为了做图表,查看了论坛中的所有文章,但大都是用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).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 来注册该组件的方法,如果那位高手知道,请告诉我 luo_zhenyu@netease.com ,谢谢!

附:

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 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·chart组件在ASP中的应用  (2005-03-12)
 ·浅谈MsChart在ASP中的应用  (2005-03-12)
 ·ASP中实用的广告交替组件  (2005-03-12)
 ·在ASP中编写DLL的问题  (2005-03-12)
 ·ASP中五种连接数据库的方法(转)  (2005-03-12)
 ·ASP中Cookie使用指南  (2005-03-12)
 ·ASP中检查没有数据提交的页面Ⅰ  (2005-03-12)
 ·ASP中检查没有数据提交的页面Ⅱ  (2005-03-12)
 ·ASP中处理#include  (2005-03-12)
 ·ASP中巧用Response属性  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统