使用Win32::OLE操作Excel——Excel对象模型
如果想自动化操作和控制Excel应用程序,则必须要与Excel对象模型所提供的对象进行交互。理解和熟悉Excel对象模型,就可以更容易的操作Excel。
Excel对象模型提供了很多对象[1],有些对象可能会经常遇到。一般情况下,对Excel程序的设置、对工作簿和工作表的操作、单元格和单元格区域的操作以及图标的操作,是经常涉及到的。因此,在学习Excel对象模型时,先集中学习与这些操作相关的对象、属性、方法和事件,以此来加深对Excel对象模型的认识和理解。
以上内容的操作,实际上是就对Excel对象的操作:
- Excel程序 Application对象
- 工作簿 Workbook对象
- 工作表 Worksheet对象
- 单元格 Range对象
- 图标 Chart对象
Application对象
Excel Application对象代表Excel应用程序本身。Application对象公开了大量有关正在运行的应用程序、应用于该实例的选项以及在该实例中打开的当前用户对象的信息。
Application对象提供了很多属性来控制Excel的一般状态。
表1:一些控制Excel状态的Application属性
| 属性 | 类型 | 说明 |
| EditDirectoryInCell | 布尔 | 直接就地获取或设置编辑单元格的能力。如果为 False,则您只能在公式栏中编辑单元格。 |
| FixedDecimal | 布尔 | 如果为 True,则所有的数字值都使用 FixedDecimalPlaces 属性来确定小数位数;否则将忽略 FixedDecimalPlaces 属性(默认值为 False)。 |
| FixedDecimalPlaces | long | 确定用于数值数据的小数位数(如果 FixedDecimal 属性为 True)。 |
| ScreenUpdating | 布尔 | 如果为 True,Excel 就会在每个方法调用之后更新其屏幕。为了节省时间并且使您的应用程序看起来更加专业,您可以在代码运行时关掉显示。一旦完成,就一定要再次将此属性值重新设置为 True。Excel 不会自动为您重新设置它。 |
| StandardFont | 字符串 | 获取或设置 Excel 中默认字体的名称;只有在重新启动 Excel 之后才会生效。 |
| StandardFontSize | long | 获取或设置 Excel 中默认字体的大小;只有在重新启动 Excel 之后才会生效。 |
在表1列出的所有属性中,最可能使用的一个属性是ScreenUpdating。使用这个属性,不但使Excel应用程序看起来更专业,还可以提高它们的运行效率——在每次修改后更新显示会严重影响代码的运行效率。
Application对象还提供了一组控制Excel中显示的属性,可以修改这些属性改变用户在屏幕上所看到的内容。
表2:一些控制Excel外观的Application属性
| 属性 | 类型 | 说明 |
| DisplayAlerts | 布尔 | 如果为 True(默认值),则当运行代码时,只要有必要(例如在删除一个工作表时),Excel 就会显示警告消息。设置为 False 以忽略警告。Excel 的行为就好像您已经为每个警告选择了默认值。 |
| DisplayFormulaBar | 布尔 | 如果为 True(默认值),Excel 就会显示标准公式栏以编辑单元格;设置为 False 以隐藏公式栏。 |
| DisplayFullScreen | 布尔 | 如果为 True,则 Excel 以全屏模式运行(这种模式与仅仅最大化 Excel 窗口的效果不一样);其默认值为 False。 |
Application对象的一些属性能够返回其他的对象。
表3:返回对象的Application属性
| 属性 | 类型 | 说明 |
| ActiveCell | 范围 | 返回对活动窗口(顶部的窗口)中当前活动单元格的引用。如果没有活动窗口,此属性会产生一个错误。 |
| ActiveChart | 图表 | 返回对当前活动的图表的引用。对于一个嵌入式图表来说,只有当此图表被选中或被激活时才可认为是活动的。 |
| ActiveSheet | 对象 | 返回对活动工作簿中的活动工作表的引用。 |
| ActiveWindow | 窗口 | 返回对活动窗口(顶部的窗口)的引用;如果没有活动窗口,则不返回任何结果。 |
| Charts | 工作表 | 返回 Sheet 对象(Chart 和 Worksheet 对象的父对象)的集合,这些对象包含对活动工作簿中的每个图表的引用。 |
| Selection | 对象 | 返回应用程序中选中的对象。可能是一个 Range、一个 Worksheet 或任何其他的对象 — 同样适用于 Window 类,在这种情况下,选择通常是一个 Range 对象。如果当前没有对象被选中,则不返回任何结果。 |
| Sheets | 工作表 | 返回 Sheet 对象的集合,这些对象包含对活动工作簿中每个工作表的引用。 |
| Workbooks | 工作簿 | 返回 Workbook 对象的集合,这些对象包含对所有打开的工作簿的引用。 |
最常用的是Workbooks属性,它可以打开、新建或循环访问打开的工作簿。
- 新建工作簿
my $workbook = $excel->Workbooks->add();
- 打开已有工作簿
my $workbook = $excel->Workbooks->open('c:/documents/myworkbook.xls');
- 引用某个工作簿
可以使用整数(指示在集合中的位置)或工作簿名作为 Workbooks 集合中的索引。
my $workbook = $excel->Workbooks(1);
如果想要通过名称引用工作簿,需要注意对其进行引用的方法:必须使用在标题栏看到的名称,在保存该文件之前,这个名称不包括“.xls”扩展名:
# 保存工作簿之前,这样引用
my $workbook = $excel->Workbooks('Book1');
# 保存工作簿之后,这样引用
my $workbook = $excel->Workbooks('Book1.xls');
- 关闭工作簿
与大多数的集合不同,这个集合允许一次性地关闭所有的成员。下面的方法调用关闭所有打开的工作簿:
$excel->Workbooks->close();
Workbook对象
Worksheet对象
Range对象
[1] 查看Excel对象模型的方法:打开Excel后,按F1键,在“Excel帮助”中,点击“目录”,然后点击“Microsoft Excel 对象模型”链接即可。
使用Win32::OLE操作Excel——Excel对象模型的更多相关文章
- OLE操作Excel编译错误处理
Excel在公司用的很多,而这个东西我用的不是很好,就想用程序来处理,遇到很多错误.这几天研究了下OLE操作Excel.环境:VS2008 SP1+Excel 2007 加入OLE Type Li ...
- VC用OLE方式读写Excel
前几天要做一个项目,需要读取Excel中的数据.从网上查资料发现,主要是有两种方式.一是把Excel表当成数据库使用ODBC读写,这样操作起来就跟操作Access数据库似的.但这种方式效率比较低.另一 ...
- C++读写EXCEL文件OLE,java读写excel文件POI 对比
C++读写EXCEL文件方式比较 有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看.http://www.cnblogs.com/destim/p/5476915.html C++ ...
- Java 添加OLE对象到Excel文档
本文介绍通过Java程序添加OLE对象到Excel文档.OLE分为两种形式,一种通过嵌入(Embed),方式,一种通过链接(Link)方式.前者是将对象嵌入到文档中,外部对该对象的更改不影响嵌入操作时 ...
- PHPExcel 是用来操作Office Excel 文档的一个PHP类库
PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可以使用它来读取.写入不同格式的电子表格,如 Excel (BIFF) .xls ...
- Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件
Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...
- Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包
可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...
- C#Aspose操作Word & Excel简版(后会研究补充更多功能)
利用Aspose操作Word & Excel首先要在项目中标引用Aspose.Words.dll和Aspose.Cells.dll. 首先说一说向Word中写入数据,目前做的是向Word中的标 ...
- 操作-写入excel
xlwt模块 封装 #!/usr/bin/env python # -*- coding: utf-8 -*- import xlwt import xlrd from xlutils.copy im ...
随机推荐
- Python 文件I/O (转)
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- vim中systemverilog的高亮显示
vim中systemverilog的高亮显示 Linux中的vim显示systemverilog语法高亮 windows中的gvim显示systemverilog语法高亮 Linux系统 查看打开vi ...
- (转) 将VB.NET网站转换成C#的全过程
在学习URL重写过程中碰到个是VB写的源码,看起来总是不爽的就GOOLE了下 感觉这个文章写的不错 原文地址 http://www.cnblogs.com/cngunner/archive/2006/ ...
- 为什么class中属性以空格分隔?
1 div.contain .blue{color:blue;}/*后代选择器*/2 div.contain.blue{color:blue;} /*多类选择器*/ 以上两种规则分别应用的元素如下: ...
- Android-兼容问题
兼容性问题从何而来?答:使用了低版本没有的功能,可是目标设备包括低版本. 那我们如何解决兼容性问题? 1.如果是JAVA代码 1.1 使用TargetApi(x)注解,避免Android Lint报错 ...
- Oracle 执行计划(Explain Plan)
如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以 ...
- Ueditor使用方法
1.到百度下载文件,有各种版本.下载.net版本 2.将所需文件导入工程中 分别是:themes文件夹.third-party文件夹.ueditor.all.min.js.ueditor.config ...
- Python 番外 消息队列设计精要
消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流的消息中间件,如老牌的Active ...
- 微信分享jsdk接口
HTML文件 <!DOCTYPE html><html><head> <meta charset="utf-8"> <titl ...
- XML DOM 遍历Xml文档
1.xml文档内容: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <b ...