OWC知识点滴(仅限Version 11)

OWC 知识 点滴 (仅限 Version 11
 
关键字: OWC Office Web Components 11 VB VB 中使用 OWC
 
一、在 VB 中使用 OWC 组件
    引用 Office Web Component 组件到项目中( Project à Components
23192.gif
    选择 Microsoft Office Web Components 11.0 ,点击应用将会在工具栏中出现五个组件,
23197.gif
分别为 ChartSpace SpreadSheet DataSourceControl RecordNevigationControl PivotTable 。本文档仅就 SpreadSheet 的相关操作进行说明,其余请参考《 Microsoft Office Web 组件 Visual Basic 参考 》。
二、通过可视化配置设定 OWC 的呈现效果及相关属性
    可以通过设定命令和选项来更改 OWC 呈现的相关设置(在 SpreadSheet 上点击右键调出)
23205.gif
通过设定格式工作表工作簿等选项,将 OWC SpreadSheet 显示格式设定为如下图所示样式,其中列表头是不显示的,采用第一列充当表头,并且锁定第一行的区域,使得表头可以始终呈现给用户(实现该步骤,只需要将鼠标选中第二行,并设定格式中的单元格 à 锁定, 如上图所示小锁头符号)。
23209.gif
    还需要在属性设定中设定其是否显示 TitleBar ToolBar OfficeLogo 等。
    1
要实现类 Grid 效果,则应不允许插入列、删除列等。可以设定保护得到效果。
23211.gif
不过,不建议在设计时就做保护的设定。因为程序运行过程中会对 SpreadSheet 做数据填充或呈现样式修改等动作,就必须先要取消 SpreadSheet 的保护效果,在代码上有些冗余。所以建议在运行中动态调整保护的选项,可以通过 SpreadSheet.ActiveSheet.Protect() 方法设定。
2
如何设定单元格的值类型?
方法一、可以通过设定格式中的数字格式设定一列或某单元格的值类型
方法二、代码实现,可以在 Excel 中录制宏得到 VBS 代码
''@ means Text ; '0.00000_ ' means numeric ; '0_ ' means integer
Me.xlSpreadsheet.ActiveSheet.Range("A:B").NumberFormat = "@"
Me.xlSpreadsheet.ActiveSheet.Range("C:C").NumberFormat = "0.00000_ "
Me.xlSpreadsheet.ActiveSheet.Range("D:K").NumberFormat = "@"
Me.xlSpreadsheet.ActiveSheet.Range("L:N").NumberFormat = "0_ "
注意: 0_ 后面还有一个空格,这个是不可少的。
3
第一行作为 Title ,则 Title 不允许在运行时被 User 修改,所以需要 Lock 该行,可以通过设计时设定,也可以在运行时动态控制
''''Lock the Title, can not be modified
xlSpreadsheet.ActiveSheet.Range("A1:B1").Locked = True
三、呈现数据、读取数据、更改呈现样式等操作方式
    1 :呈现数据
SpreadSheet 的数据来源可以有三种,分别为 CSV Data XML Html ,分别对应方法为 CSVData/CSVURL XMLData/XMLURL HTMLData/HTMLURL 。不过这仅限于比较规则的二维表结构的数据。
一般的还是采用逐行设定值的方式。
xlSpreadsheet.ActiveSheet.Cells(intRowCounter, intColCounter).Value
        注意:不管采用哪种方式,都需要先将 SpreadSheet 锁定区域解锁,才能将值设定上去。
    2 :读取数据
       SpreadSheet 上读取数据的方式与呈现数据方式类似,直接采用逐行逐列方式读取。
    3 :更改呈现样式
SpreadSheet 的样式设定非常灵活,可以设定一行、一列、多行、多列、选定单元格等的样式。其动态设定方式分别为如下所示:
''''设定一列的背景颜色,可以通过下面几种方式
xlSpreadsheet.ActiveSheet.Columns(1).Interior.Color = vbRed
xlSpreadsheet.ActiveSheet.Columns(1).Interior.ColorIndex = 10
xlSpreadsheet.ActiveSheet.Range("A:A").Interior.Color = vbRed
''''设定一列的字体颜色,可以通过下面几种方式
xlSpreadsheet.ActiveSheet.Columns(1).Font.Color = vbRed
xlSpreadsheet.ActiveSheet.Columns(1).Font.ColorIndex = 10
xlSpreadsheet.ActiveSheet.Range("A:A").Font.Color = vbRed
''''设定一行的背景、字体颜色,可以通过下面几种方式
xlSpreadsheet.ActiveSheet.Rows(1).Interior.Color = vbRed
xlSpreadsheet.ActiveSheet.Rows(1).Interior.ColorIndex = 10
xlSpreadsheet.ActiveSheet.Rows(1).Font.Color = vbRed
xlSpreadsheet.ActiveSheet.Rows(1).Font.ColorIndex = 10
''''设定多行或多列的背景、字体颜色,类似
''''设定选定单元格的背景、字体颜色,如下
xlSpreadsheet.ActiveCell.Interior.Color = vbRed
xlSpreadsheet.ActiveCell.Interior.ColorIndex = 10
xlSpreadsheet.ActiveSheet.Cells(1,1).Interior.Color = vbRed
''''设定一列隐藏
xlSpreadsheet.ActiveSheet.Columns(1).Hidden = True
四、事件的组合使用、数据有效性 Check
要使用 OWC 中的 Events ,首先必须开启 Events 功能。可以在属性窗口中将 EnableEvents 更改为 True 即可(默认也是 True )。
1 CommandBeforeExecute
在执行一个 Command 之前发生 。如在执行删除行之前需要判断是否选中了多行,则可以在该事件中判断 Selection.Rows.Count 并做相应的处理。
此事件中可以拦截 SpreadSheetCommandID 中所有的 Command 事件。
    2 CommandExecute
在执行一个 Command 时发生 。如粘贴时做相应的查询动作,则可以捕获 CommandID ssCommandCopy Command ,并根据数据做相应的处理。
        此事件中可以拦截 SpreadSheetCommandID 中所有的 Command 事件。
    3 StartEdit
       在单元格开始进入编辑状态时发生
    4 EndEdit
在单元格编辑完成之后发生,不管单元格内的数据有没有做更新,都会发生 。其中 FinalValue 代表编辑之后的值,之前的值可以通过 Cell 读取。
       可以在此事件中做相应的查询处理,类似粘贴时的动作。
    5 DblClick
       在双击 SpreadSheet 时发生 。可以将 SpreadSheet 的选定单元格置于 Edit 状态。
    6 BeforeKeyPress
       在单元格的 KeyPress 事件之前发生 。可在此事件中针对不同 Column 进行数据的 Check
如第 1 列只允许输入 Double 型数据,则可以通过 xlSpreadsheet.ActiveCell.Column 获取当前编辑的列。然后判断 KeyAscii 的范围进行相应处理。
If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) And _
    KeyAscii <> vbKeyBack And KeyAscii <> Asc(".") Then
    Cancel.Value = 1
End If
    7 BeforeContextMenu
在显示上下文菜单之前发生 。可以在此事件中屏蔽 SpreadSheet 原有的菜单,也可以设定自定义的上下文呢菜单。
五、与 Excel 的互操作
VB 中提供 Excel 下载、上传功能,可以采用 OWC Excel 的一些相似操作提高性能和简化操作的复杂性。
1 Export To Excel
    OWC SpreadSheet 中的有效数据 Export Excel 中,可以采用如下两种方式:
    a) SpreadSheet.Exports 方法的使用
SpreadSheet 带有的方法 Exports 可以将 SpreadSheet 中的数据和格式统统导出成 Excel 。不过此时生成的 Excel 不是二进制编码的文件,而是 XML 编码的文件。一定程度上带有局限性。
       b) Copy And Paste
           可以将 SpreadSheet 的有效区域选中,
SpreadSheet.ActiceSheet.UsedRange.Rows.Count 将返回有效行数;
SpreadSheet.ActiceSheet.UsedRange.Columns.Count 将返回有效列数(一般列数固定)。
Spreadsheet.Range("A1:S" & 有效行 ).Copy
Excel.WorkBooks(1).WorkSheets(1).Paste
附录:
    附一、 OWC SpreadSheet useful command list
SpreadSheetCommandId
Command ID
Command Name
Description
1000
ssCommandUndo
撤销
1001
ssCommandCut
剪切
1002
ssCommandCopy
复制
1003
ssCommandPaste
粘贴
 
 
 
10006
ssCommandDeleteRows
删除行(一行或多行)
10007
ssCommandDeleteCols
删除列(一列或多列)
10008
ssCommandInsertRows
插入行(一行或多行)
10009
ssCommandInsertCols
插入列(一列或多列)
 
 
 
10011
ssCommandSelectRow
选择一行
10012
ssCommandSelectCol
选择一列
10013
ssCommandSelectAll
选中Sheet中的全部内容
 
这里仅枚举出常用的 Command ,对于其他的参数,请参考《 Microsoft Office Web 组件 Visual Basic 参考》中的枚举 SpreadSheetCommandID
   
    附二、 OWC SpreadSheet Objects
23214.gif


http://dev.21tx.com/2006/01/24/10958.html

转载于:https://www.cnblogs.com/Dragon-China/archive/2007/02/05/640309.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值