分享
 
 
 

OWC知识点滴(仅限Version 11)

王朝other·作者佚名  2006-02-04
窄屏简体版  字體: |||超大  

OWC知识点滴(仅限Version 11)

关键字:OWC、Office Web Components 11、VB、VB中使用OWC

一、在VB中使用OWC组件

引用Office Web Component组件到项目中(ProjectàComponents)

选择Microsoft Office Web Components 11.0,点击应用将会在工具栏中出现五个组件,

分别为ChartSpace、SpreadSheet、DataSourceControl、RecordNevigationControl、PivotTable。本文档仅就SpreadSheet的相关操作进行说明,其余请参考《Microsoft Office Web组件Visual Basic参考》。

二、通过可视化配置设定OWC的呈现效果及相关属性

可以通过设定命令和选项来更改OWC呈现的相关设置(在SpreadSheet上点击右键调出)

通过设定格式、工作表、工作簿等选项,将OWC的SpreadSheet显示格式设定为如下图所示样式,其中列表头是不显示的,采用第一列充当表头,并且锁定第一行的区域,使得表头可以始终呈现给用户(实现该步骤,只需要将鼠标选中第二行,并设定格式中的单元格à锁定,如上图所示小锁头符号)。

还需要在属性设定中设定其是否显示TitleBar、ToolBar、OfficeLogo等。

附1:

要实现类Grid效果,则应不允许插入列、删除列等。可以设定保护得到效果。

不过,不建议在设计时就做保护的设定。因为程序运行过程中会对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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有