惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
量子位
V
Visual Studio Blog
F
Full Disclosure
博客园 - 叶小钗
Recent Announcements
Recent Announcements
G
Google Developers Blog
博客园 - Franky
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
B
Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
Netflix TechBlog - Medium
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Cloudbric
Cloudbric
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Martin Fowler
Martin Fowler
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
S
Secure Thoughts
P
Privacy International News Feed
I
InfoQ
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - 萍踪侠影

c#过滤HTML代码 - 萍踪侠影 - 博客园 也來開發一款日歷控件 制作activeX控件 在aspx頁中獲取DataGrid行序號 - 萍踪侠影 - 博客园 在MasterPage中檢驗User是否登入 - 萍踪侠影 - 博客园 [轉載]Run As Administrator 以編程方式為GridView添加欄位 - 萍踪侠影 - 博客园 Internet Explorer 7中的层叠样式表兼容性 ASP讀取excel文件 - 萍踪侠影 - 博客园 一個Ajax.NET的查詢實例 js校验的通用工具 將字串轉換為日期型數據的例子 - 萍踪侠影 - 博客园 將datagrid控件內容輸出到excel文件 - 萍踪侠影 - 博客园 C#常用函数集 IPv6 简介 初探AJAX.NET Visual C# 3.0 新特性概览 遍历XML引擎版本以适应代码 微调您的 Web 站点以适应 Windows XP Service Pack 2
Microsoft Office Web 组件 PivotTable 基础
萍踪侠影 · 2006-09-21 · via 博客园 - 萍踪侠影

在运行时获得数据

在设计时连接数据源所需的信息,在运行时必须通过代码来指定。下面的示例显示了通过使用 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