利用office web component打造精品图表(二)

    技术2022-05-11  152

    利用office web component打造精品图表()    

    OWC介绍:

    Microsoft Office 2000中包含有一组称为OWC的新控件集合。利用这些组件,可以在WEB浏览器以及其他传统的编程环境下创建许多有用的数据分析解决方案与报表生成解决方案。

    Office Web Component是一组COM(Component Object Model:组件对象模型)控件的集合,用于为多种控件容器提供交互式的电子数据表模型、数据库报表与数据可视化服务。

    OWC库中包含四个主要组件:Spreadsheet(电子数据表)组件、Chart(图表)组件、PivotTable(数据透视表)组件、Data Source(数据源)组件。

    Office Web Components的非凡之处在于它们可以在诸如Web页面、Visual Basic表单等的控件容器中使用,也可在内存中作为不可见对象使用。大多数COM控件只能在控件容器中作为可视控件使用,而大多数不可见对象则只能在内存中使用,而不能放入表单中或Web页面中。OWC库中的组件可以以以上两种方式被使用,从而使得用户可以以界面方式引用控件,或者使控件为其提供基本服务。以不可见对象方式使用组件的能力也可以方便的在服务器上使用这个库,从而轻易的产生在任何Web浏览器上查看静态内容。

    OWC中的所有控件都支持丰富的编程接口集合,使得开发者可以通过Microsoft VBScriptMicrosoft JscriptMicrosoft VBAJavaC++与任何其他可调用双向或快速COM接口的语言来调用这些控件。

    Chart组件:

    Chart组件是一个由开发Microsoft Excel 2000中图表制作的开发人员创建的一个COM控件。它能以屏幕上COM控件与内存中GIF生成引擎两种方式提供基本的商业图表制作方法。

    OWC9中,Chart控件除支持Excel中的所有二维图表类型(Contour类型除外)外,还支持Polar型、Stacked Pie型、Filled Scatter型的图表。但是不包含对任何三维图表类型或效果的支持。

           Office2000提供的Office Web Component的版本为9.0(OWC9)

    OfficeXP提供的Office Web Component的版本为10.0(OWC10)

     

    在以后的系列教程中,我们以sqlserver中的northwind数据库为例子,深入浅出的来介绍MS OWC,所有的例子直接可以运行。

     

    我们通过一个例子来展现owc的强大功能.    

    CHART.ASP程序。

    <%  Option  Explicit  %>

    <!--#include  file="adovbs.inc"-->

    <HTML>

    <HEAD>

    <TITLE>利用MS office web component打造精品图表</TITLE>

    <%

    Function  ExportChartToGIF(objCSpace,  strAbsFilePath,  strRelFilePath)

    Dim  strFileName

    Randomize  

    strFileName  =  Timer  &  Rnd  &  ".gif"

    objCSpace.ExportPicture  strAbsFilePath  &  "/"  &  strFileName,  "gif",  650,  400

    ExportChartToGIF  =  strRelFilePath  &  "/"  &  strFileName

    End  Function

     

    Sub  CleanUpGIF(GIFpath)

    Dim  objFS

    Dim  objFolder

    Dim  gif

    set  objFS  =  Server.CreateObject("Scripting.FileSystemObject")

    set  objFolder  =  objFS.GetFolder(GIFpath)

    for  each  gif  in  objFolder.Files

    if  instr(gif.Name,  ".gif")  >  0  and  DateDiff("n",  gif.DateLastModified,  now)  >  10  then

    objFS.DeleteFile  GIFpath  &  "/"  &  gif.Name,  True

    end  if

    next

    set  objFolder  =  nothing

    set  objFS  =  nothing

    End  Sub

     

    %>

    </HEAD>

    <BODY  BGCOLOR="#FFFFFF">

    <div  align="center">

    <br>

    <br>

    <%

     

    dim  objChartSpace

    dim  objChart

    dim  objSeries

    dim  objConn

    dim  objRS

    dim  c

    dim  series

    dim  strChartAbsPath

    dim  strChartRelPath

    dim  strChartFile

    dim  axis

    dim  fnt

    dim  ax

     

    strChartAbsPath  =  Server.MapPath(".")

    strChartRelPath  =  Server.MapPath(".")

    '设置组件

    '使用了owc9,也就是office 2000中带的

    set  objChartSpace  =  Server.CreateObject("OWC.Chart.9")

    set  objChart  =  objChartSpace.Charts.Add

    set  c  =  objChartSpace.Constants

     

    '图形边框颜色

    objchart.Border.Color="red"

    '以柱状图显示

    objchart.type=1

    objChart.HasLegend  =  True'是否显示图例

    objChart.HasTitle=true  '显示标题

    objChart.Title.Caption  ="利用office web component打造精品图表(www.ourfly.com中文技术网站)"  

    set fnt=objchart.title.font

    fnt.name="宋体"

    fnt.size=12

    fnt.bold=true

    fnt.color="red"

     

    set  objConn  =  Server.CreateObject("ADODB.Connection")

    objConn.Open  "provider=SQLOLEDB; Data Source=yang; Initial Catalog=northwind; User Id=sa; Password="

     

    set  objRS  =  Server.CreateObject("ADODB.Recordset")

    set  objRS.ActiveConnection  =  objConn

    objRS.CursorType  =  adOpenStatic

    objRS.CursorLocation  =  adUseClient

    '统计每种供应货物的数量有多少

    objRS.Open  "select count(productname) as col,CategoryName from products,categories whereproducts.categoryid=categories.categoryid group by categoryname"

     

    set  objChartSpace.DataSource  =  objRS

    '显示图例内容

    objChart.SetData  c.chDimSeriesNames,  0,  "CategoryName"

    for  each  objSeries  in  objChart.SeriesCollection

    objSeries.SetData  c.chDimCategories,  0,  "CategoryName"

    objSeries.SetData  c.chDimValues,  0,  "col"

    next

     

    set ax=objChart.Axes(c.chAxisPositionBottom)

    ax.hastitle=true

    ax.Title.Caption  =  "种类"

    set fnt=ax.title.font

    fnt.name="宋体"

    fnt.size=15

    fnt.bold=true

    fnt.color="blue"

     

    set ax=objChart.Axes(c.chCategoryAxis)

    ax.hastitle=true

    ax.Title.Caption  =  "数量"

    set fnt=ax.title.font

    fnt.name="宋体"

    fnt.size=15

    fnt.bold=true

    fnt.color="green"

     

    strChartFile  =  ExportChartToGIF(objChartSpace,  strChartAbsPath,  strChartRelPath)

    Response.Write  "<IMG  SRC="""  &  strChartFile  &  """>"  &  "<P>"

    CleanUpGIF  strChartAbsPath

     

    objRS.Close

    set  objRS  =  nothing

    set  objConn  =  nothing

    set  objSeries  =  nothing

    set  objChart  =  nothing

    set  objChartSpace  =  nothing

    %>

    </div>

    </BODY>

    </HTML>

     

    使用这个组件的注意事项: 1。在office2000的光盘上,有一个msowc.msi的可执行文件.OK 2。建议大家用visual  interdev6.0开发,代码的自动提示功能此时会发挥出极大的作用。 效果图如下:


    最新回复(0)