Excel Web组件的应用(二)
相同
升序排序、降序排序 与 Excel 中的功能相同。快捷菜单命令层叠到“排序”菜单上,列出了要排序的字段标题。在 Excel 中没有“排序”对话框。
自动筛选 在下拉列表中包含多个复选框来实现多选。
没有“前 10 个”或“自定义”选项。
不能使用高级筛选功能。
导出到 Excel 打开 Microsoft Excel,并将所有数据从 Spreadsheet 组件复制到一个新的、只读的工作表中,该工作表名称为 OWCSheet#####.htm 格式(##### 为一随机数)。最多可有 65,536 行,这与 Excel 是一样的,但是从 A 到 ZZ 共计 676 列,而 Excel 只有 256 列可用。如果使用的列超出 256 列,那么当数据导出到 Excel 时,超出的列中的数据将丢失。
属性工具箱 显示 Spreadsheet 组件的属性工具箱。
帮助 显示 Microsoft 电子表格帮助。
3.2.2 PivotTable 组件的用户界面
PivotTable 组件工具栏(如图5 所示)具有与 Excel 中的数据透视表工具栏相同的基本功能,但它还有其他一些组件。
图 5:PivotTable 组件工具栏
下表简述了 PivotTable 组件工具栏上组件的功能。
表3 PivotTable 组件功能
组件 组件类型 操作
关于 按钮 显示“关于 Microsoft Office Web 组件”对话框。
复制 按钮 将选定数据复制到剪贴板。
升序排序、降序排序 切换 打开时,按升序或降序对列或行字段进行排序。关闭时,数据恢复到保存时的方式。与 Excel 中的数据透视表报表不同的是,空格被排在顶端。
自动筛选 切换 打开时,根据行字段或列字段下拉列表中复选框的状态(选中或未选中)来显示或隐藏条目。关闭时,所有条目都将显示。
自动计算 菜单 允许选择使用求和、计数、最小值、最大值功能来汇总字段。可以被数据透视表列表的创建者禁用。
分类汇总 切换 显示或隐藏选定字段的分类汇总。
移动到行区域 按钮 将选定的列字段移动到行区域(选定内容变为行字段)。
移动到列区域 按钮 将选定的行字段移动到列区域(选定内容变为列字段)。
移动到筛选区域 按钮 将选定字段移动到筛选字段区域(选定内容变为筛选)。能够被数据透视表列表的创建者限制。
转到明细数据 按钮 将选定字段移动到明细(数据)区域。如果下面两个选项中有一个为真,则不能移动字段:数据透视表列表的创建者已限制对数据区的访问;数据透视表列表是基于来自 OLAP 数据库的源数据。
升级 按钮 将选定字段向外移动一级(通常从数据区域移动)。
降级 按钮 将选定字段向内移动一级(通常从数据区域移动)。
展开/折叠 切换 展开或折叠选定字段、数据条目或数据区域中单元格的数据明细。与在 Excel 中不同的是,这里只有一个按钮在“展开”和“折叠”之间切换。而在 Excel 中,它们是两个按钮。
刷新 按钮 从源列表或数据库更新数据。
导出到 Excel 按钮 启动或切换到 Excel,同时将数据以数据透视表报表格式复制到新的工作簿中。只有在需要进一步分析数据时才使用此功能。请使用“复制”向 Excel 电子表格传递数据。
属性工具箱 按钮 显示 PivotTable 组件的属性工具箱。
字段列表 按钮 显示数据透视表列表的源数据中可用字段的层次列表。
帮助 按钮 显示 Microsoft 数据透视表列表的帮助。
3.3 在 Microsoft FrontPage 中使用组件
3.3.1 创建新网页
FrontPage 的“插入”菜单上的“组件”处,单击要插入的组件。该组件将插入到当前插入点。
注意向文档中插入 Chart组件时,如果该 Web 页中有可用的数据源,FrontPage 将自动使用 Microsoft Office 图表向导提示创建该组件。如果没有可用的数据源,将收到说明信息。通过图表向导将 Chart 组件添加到 Web 页后,FrontPage 也向网页添加了 Data Source 组件,该组件用来将 Chart 组件绑定到所用的数据源。
用于 Spreadsheet 组件时发布的 <object> 标记:
<object id="SpreadSheet1" classid="CLSID:0002E510-0000-0000-C000-000000000046">
用于 Chart 组件时发布的 <object> 标记:
<object id="Chart1" classid="CLSID:0002E500-0000-0000-C000-000000000046" >
用于 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">
FrontPage 中的脚本
在 FrontPage 中向组件添加脚本很容易。组件脚本可以使用 VBScript 或 Microsoft Jscript 来编写,在此我们只使用了 VBScript 示例。
如果 Web 页包含一个以上的组件,那么只显示一个属性工具栏。属性工具栏设置的变动将影响所有活动的组件。
电子表格示例
<script language="vbscript">
<!--
Sub Window_Onload()
strPath = "d:\liukai\shili\book1.htm"
Spreadsheet1.HTMLURL = strPath
End Sub
--!>
4 电子表格组件
本章主要研究的是spreadsheet组件的功能和编程。
4.1 电子表格组件基本功能
电子表格组件支持Excel中排序和过滤功能,并且通过编程模型和用户界面来提供这些功能。
排序
用户在对电子表格区域排序时可以在电子表格用户界面中,首先选择需要排序的区域(或者在区域中选择任意的一些单元),然后点击降序工具条按钮。同时我们也可以通过Range对象的Sort方法,使用排序功能。其功能是在用户单击或者双击一个列标头时就可以对列表进行排序。
在此我们需要说明的是电子表格组件一次只能根据一列来对列表进行排序,它不能像excel那样可以同时根据最多三个关键列进行排序(例如,先根据年龄排序,然后根据身高排序,最后根据体重排序)。但是可以通过在其脚本中编程实现多列排序的功能.可以使用下列函数模仿多列的排序。
MultiColumnSort
目的: 同时根据多列对电子表格进行排序
传入: 电子表格中需要排序的区域的引用,
被排序的列的列编号的数组,
排序方向标志的数组(和上面的数组相同大小)
输出: 无 (完成排序动作)
Sub MultiColumnSort(Spreadsheet, Range, Columns, Directions)
‘ 启动一个撤消单位,以便可以以一个完整单位的任务进行撤消
Spreadsheet.BeginUndo()
‘ 关闭ScreenUpdating属性,使得当我们设置过滤,排序
‘ 和再过滤时电子表格不会重画
Spreadsheet.ScreenUpdating = False
‘ 现在递减遍历Columns数组和Directions数组,
‘ 实现我们需要的效果
For ct = ubound(Columns) To lbound(Columns) Step -1
0 is a guess for column headings
Range.Sort Columns(ct), Directions(ct), 0
Next 'ct
‘ 打开ScreenUpdating属性开关,使电子表格重画
Spreadsheet.ScreenUpdating = True
‘ 关闭一个撤消单位
Spreadsheet.EndUndo()
End Sub 'MultiColumnSort()
注释:BeginUndo和EndUndo方法用来将所有的排序操作组合在一个撤消动作块中,当用户选择撤消命令时,这些排序动作就会被一起撤消。
多列排序实际上是按照被排序列所定义次序的相反次序执行排序动作。例如,需要先根据年龄进行排序,然后再根据身高进行排序,函数则会首先根据身高排序列表,然后再根据年龄进行排序。以上函数接收三个参数:一个需要排序的区域,一个列编号的数组,一个方向值的数组(降序或升序)。本例中函数降序遍历这两个数组,从而实现了多列排序的效果。
过滤
在Excel中,过滤时选择单个项很方便,然而选择多项需要使用高级自动筛选对话框。而在Spreadsheet组件中,自动过滤下拉列表为每一项都提供了一个简化复选框,可以快速切换所有项的状态,较之Excel更为方便。但是电子表格组件中的自动过滤下拉列表没有包括Excel中很有用的1个设置选项。例如,找不到”前N位”的选项,这个选项使能够快速过滤,得到前N位的项。不过,我们可以通过调用电子表格组件的编程模型来实现此功能。
TopNFilter
目的: 根据给定的列编号过滤出列表的前N项
输入: 电子表格和区域的引用、列编号,
要过滤出的行的行数,以及标识过滤出前N行还是后N行的方向值
Out: 无 (完成所需的过滤)
Sub TopNFilter(Spreadsheet, Range, ColumnNum, N, Direction)
Set c = Spreadsheet.Constants
Set rngData = Range
Set af = Spreadsheet.ActiveSheet.AutoFilter
‘ 启动一个撤消单元,以便将来能以完整的单元进行撤消
Spreadsheet.BeginUndo()
‘ 关闭ScreenUpdating属性开关,使得当我们在设置过滤,排序和再次应用
‘ 过滤时,电子表格不会重画
Spreadsheet.ScreenUpdating = False
‘ 清除任何现存的过滤定义
ClearFilters Spreadsheet
‘ 在给定的数据区域中根据传入的列号的列排序列表
If LCase(Direction) = "bottom" Then
rngData.Sort ColumnNum, c.ssAscending, c.ssNo
Else
rngData.Sort ColumnNum, c.ssDescending, c.ssNo
End If
‘ 如果N+1,N+2等等的行和第N行的值相同,
‘ 则”前N位”过滤的结果可以会包含多过N的行。
‘ 因此循环查看N+1等行是否和第N行的值相同,
‘ 直到查找到一个不相同的值为止。
vNValue = rngData.Cells(N,ColumnNum).Value
While rngData.Cells(N+1,ColumnNum).Value = vNValue
N = N + 1
Wend
‘ N现在的值就是我们需要包括在过滤结果中的行的行数。
Set fltr = af.Filters(ColumnNum)
fltr.Criteria.FilterFunction = c.ssFilterFunctionInclude
For ct = 1 To N
fltr.Criteria.Add(rngData
Excel Web组件的应用(二)由毕业论文网(www.huoyuandh.com)会员上传。