Microsoft Office Web 组件 PivotTable 基础

在运行时获得数据

在设计时连接数据源所需的信息,在运行时必须通过代码来指定。下面的示例显示了通过使用 ConnectionString 属性将 PivotTable List 控件连接到数据库、选择要在数据透视表列表中显示的字段以及使用 XML 文件作为数据源的方法。

示例 1   直接连接到数据库

本示例连接到罗斯文商贸示例数据库,并且使用 AutoLayout 方法将“客户”表中的所有字段填入数据透视表列表的数据区域。下面的代码可以在 OWCExamples.xls 文件的 frmPT1 窗体中找到。

Private Sub UserForm_Initialize()
Dim strPath as String
strPath = "c:\program files\microsoft office\office\samples\northwind.mdb"
    ' 创建罗斯文和 Customers 表的连接。
    PivotTable1.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & _
        "data source=" & strPath
    PivotTable1.DataMember = "Customers"
    
    ' 自动填充 PivotTable 组件。
    PivotTable1.ActiveView.AutoLayout
End Sub

示例 2   指定放置字段的位置

本示例以上一示例为基础。它使用相同的连接,但没有自动填充数据透视表列表,而是使用 InsertFieldSet 方法将数据放置在不同的轴(筛选、行、数据)中。数据区域的字段使用 FieldSets 属性进行访问。FilterMember 属性用于设置 Country 字段的默认筛选。下面的代码可以在 OWCExamples.xls 文件的 frmPT2 窗体中找到。

Private Sub UserForm_Initialize()
Dim strPath as String
strPath = "c:\program files\microsoft office\office\samples\northwind.mdb"
    ' 创建罗斯文和 Customers 表的连接。
    PivotTable1.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & _
        "data source=" & strPath
    PivotTable1.DataMember = "Customers"
    
    With PivotTable1.ActiveView
        .FilterAxis.InsertFieldSet .FieldSets("Country")
        .RowAxis.InsertFieldSet .FieldSets("Region")
        .DataAxis.InsertFieldSet .FieldSets("CompanyName")
        .DataAxis.InsertFieldSet .FieldSets("ContactName")
        .DataAxis.InsertFieldSet .FieldSets("Phone")
        .FieldSets("Country").FilterMember = "USA"
    End With
End Sub

示例 3   使用 XML 文件作为数据源

PivotTable 组件不能直接连接到 ADO 记录集。不过,ADO 记录集可以保存为一个 XML 文件并且 PivotTable 组件可以读取 XML 流。下面的代码(在示例文件的 frmPT3 窗体中)说明了保存 ADO 记录集然后将 PivotTable 组件连接到所保存的 XML 文件的过程。

Sub UserForm_Initialize()
    ' 创建记录集并保存为 XML 文件。
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim strPath As String
    Dim strNewLocation
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    strPath = "C:\Program Files\Microsoft Office\Office\Samples\NorthWind.mdb"
    strNewLocation = "c:\customerlist.xml"
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & strPath
        
    ' 创建记录集并保存为 XML 文件。
    With rst
        .CursorLocation = adUseClient
        .CursorType = adOpenDynamic
        .Open "Customers", cnn
        .Save strNewLocation, adPersistXML
    End With
    
    ' 将 PivotTable 组件连接到 XML 文件并
    ' 使用数据自动填充。
    With PivotTable1
        .ConnectionString = "Provider=MSPersist"
        .CommandText = strNewLocation
        .ActiveView.AutoLayout
    End With
End Sub












组件包含的代码

在 Web 页上创建 Office Web 组件需要同时使用 HTML 和 XML 代码。本节介绍了组件包含的代码。

<Object> 标记

<object> 标记识别 Web 页上使用的 Office Web 组件的类型、组件的 ClassID 和 codebase 属性(有关该属性的详细信息,请参阅本文前面的“未安装组件时的发布 msowcbasics_topic2a”一节),如下面的示例所示。

用于 Spreadsheet 组件时发布的 <object> 标记:

<object id="SpreadSheet1" classid="CLSID:0002E510-0000-0000-C000-000000000046">

用于 Chart 组件时发布的 <object> 标记:

<object id="Chart1" classid="CLSID:0002E500-0000-0000-C000-000000000046" width="80%" height="80%">

用于 PivotTable 组件时发布的 <object> 标记:

<object id="PivotTable1" classid="CLSID:0002E520-0000-0000-C000-000000000046">

用于 Data Source 控件时发布的 <object> 标记:

<object id="msodsc" classid="CLSID:0002E530-0000-0000-C000-000000000046">

<Param> 标记

在 <object> 的开始标记和结束标记之间有很多 <param> 标记。这些标记包含该组件在 Internet Explorer 中设置显示格式的信息。当组件从 Microsoft Excel 中发布时,最后一个 <param> 标记包含从 Excel 导出的实际数据。在这个 <param> 标记中,数据通过 name 属性标识为 HTML 或 XML 文件。

<param name=XMLData value=...>
<param name=HTMLData value=...>

因为在 <param> 标记中的 value 属性中的数据是编码,所以很难阅读。如下面由 FrontPage 创建的 HTMLData 代码所示:

&lt;x:ExcelWorkbook&gt;
  &lt;x:ExcelWorksheets&gt;
   &lt;x:ExcelWorksheet&gt;

在前面“通过 Visual Basic 使用组件”中显示的示例同样适用于 VBScript,此处不再全部重复,而仅为每个组件显示一个示例,说明应使用的语法。

当您在将 Visual Basic 或 VBA 代码改为 VBScript 代码时,必须注意如下事项:

  • 任何添加到 Web 页的脚本都必须位于 <script> 开始标记和结束标记之间,更外层是 <html> 的开始标记和结束标记。

  • 脚本内容前后还应有 HTML 的注释标记(<!-- 和 -->),这样较早版本的浏览器将忽略这些脚本。

  • 所有变量都是变体。

  • 您不能创建对类型库的引用:因此,所有对象都必须通过使用 CreateObject 函数来创建,例如:
Set cnn = CreateObject("ADODB.Connection")
  • 您可以使用 Option Explicit 语句,但是必须自行添加。

  • VBScript 不支持命名常数。如果 Internet Explorer 脚本引擎遇到它们,该常数将作为未初始化的变量处理(值为 0)。要使用 Office Web 组件的命名常数,您必须通过使用 Constants 属性来创建对该常数的引用(如下所示),然后用该对象命名常数。如果使用其他库(如 ADO)中的常数,请确保您使用了该常数对应的数字值。
Set c = ChartSpace1.Constants
Set cht = ChartSpace1.Charts.Add()
cht.Type = c.chChartTypeBubble

因为没有通过窗体载入组件,所以不需要在 VBScript 示例中使用“Sub UserForm_Initialize()”。在这些示例中,我们将从 Window 对象的 Load 事件中开始运行代码。要使用 VBA 示例中的代码,请使用 <script> 标记括住代码,然后将其放入包含相应组件的 Web 页 <html> 标记中。


<script language="VBScript"> <!-- Sub Window_Onload()     strPath = "c:\program files\microsoft office\office\samples\northwind.mdb"     ' 创建罗斯文与 Customers 表的连接。     PivotTable1.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & _         "data source=" & strPath              PivotTable1.DataMember = "Customers"     ' 自动导入数据透视表。     PivotTable1.ActiveView.AutoLayout End Sub --> </script> 参考:MSDN
posted @ 2006-09-21 08:36  萍踪侠影  阅读(3150)  评论(1编辑  收藏  举报