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

你可能感兴趣的:(Microsoft)