PowerShell2.0之与COM对象交互(二)Word自动化.docVIP

PowerShell2.0之与COM对象交互(二)Word自动化.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PowerShell2.0之与COM对象交互(二)Word自动化

PowerShell2.0之与COM对象交互(二)Word自动化 时间:2011-01-22来源:博客园作者:佚名字体:[ 大 中 小 ]浏览次数: 1 上一篇文章主要描述了COM模型的基础知识,以及在powershell中如何调用COM,本篇文章中将会着重介绍powershell中通过COM操作 Word达到自动化管理的目的。 COM主要用于与其他程序的自动化,是高级用户、管理员,以及开发人员的不二选择。 软件产品通常会以COM对象的形式向外提供应用服务,这样即可从其他语言中调用该项功能。作为COM对象最佳的实例莫过于Microsoft Office工具,在这个工具集中的所有程序都以COM对象的形式向外提供程序对象、文档,以及其他服务,用户可以使用这些对象创建和操作文档和各类数据对象。 Word通过word.Application唯一地标识ProgID,Word应用通过自动化界面向外提供文档和文字的核心操作。可以打开一个文档,读取和修改其中的文字,并保存更改。在大多数情况下操作的是Range对象,熟悉Word的VBA(Visual Basic For Application) 编程的用户可能会对它比较熟悉,这种对象针对的是可单独处理文字单元。用户可以添加删除文字、设置不同的字体,切换文字或背景的颜色、从Document对象提供的属性创建或获取文字区域对象,并从当前选取的文字中获取内容。无论是以何种方式获取的文字区域对象(range),均可以相同的方法来处理。 本文将针对Micosoft Word 2003为模板来介绍,而Word 2007支持讲述的内容。微软的程序向来以向后继承公用对象著称,在Word 2003和Word 2007提供的变量方法和属性基本相同,代码可以在不做或略加修改的情况下直接用于Word 2007上。 (1)打开文档并提取内容 首先从简单的word相关的操作开始,即从文档中读取文字。在典型的企业环境下很多时候需要生成文档递交给其他用户审批,并最终保存在存储节点中。所以从文档中提取内容是个很重要的功能,如果能实现这个功能,则可创建脚本用于搜索关键字、从文档中提取相关信息,创建报告并合并文档等很多场合。 文件名为“Sample.doc”的Word文档中包含两行内容,如图1所示。 为了通过Shell读取出文档的内容,需要获取一个Word.Application对象的实例,它允许打开文档,并获取该文档对象的引用。获取后即可通过Document的Content属性来获取完整的内容,并返回一个Range对象,这个对象可以被用于提取内容。把这个脚本保存为Get- DocumentText.ps1,其代码如下: $wordApp = New-Object -COM Word.Application $file = (dir Sample.doc).FullName $doc = $wordApp.Documents.Open($file) $text = $doc.Content.Text $text $wordApp.Exit 查看原图(大图) 图1 用word Sample.doc文档中包含两行内容 执行这个脚本,结果如图2所示,可以看到已经获取Range对象的Text属性;另外需要强调的一点是,需要传递要读取文件的绝对地址。 查看原图(大图) 图2 通过Word.Application读取的Word文档 【注意】 Documents集合的Open方法需要一个完整路径,相对路径无效,因为Word在运行时的路径可以不同于当前路径。如很多情况下启动的Shell的当前目录有可能是C:WindowsSystem32,而所有文档保存在另外的目录中。 【强调】 Get-DocumentText.ps1脚本在使用COM之后,必须销毁先前创建的COM实例;否则将会挂起Winword.exe进程。尽管不会有太明显的问题,但是会占用物理内存。甚至在没有成功退出对象的情况下保留一个指向打开文档的引用并锁定文档,这样其他用户将无法正常访问这个文件。 能够看到所有的文字是挤在同一行中,这是由于将富格式文本转换为无格式字符串带来的副作用。如果需要显示段落结构,则需要使用 DocumentPargraphs集合。它会返回一系列Paragraph对象,每个对象在文档中都以一个段落的形式存在。这些对象中的每一个都包含文字区域对象(range),可以用其获取真实的文本内容。为了能够从Word文档中读取出原始的段落结构和内容,创建一个名为“Get- DocumentParagraph.ps1”的脚本,代码如下: $wordApp = New-Object -COM Word.Application $file = (dir Sample.

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档