拼吾爱程序人生

首页 » .Net编程 » Visual Studio.NET » .Net 中处理Word(2007)文档
cobra - 2008-5-19 13:24:00
有的时候我们需要在程序中处理Word文档,比如,删除或替换掉文档中的某些字符串,实现这个功能有很多方法,我这里介绍一种方法,个人认为其效率要优于其它方法,但本方法目前只适用于office 2007 中的Excel,Word, PowerPoint. 下面引用一些msdn上关于office 2007的介绍. 2007 Microsoft Office system为Microsoft Office Excel 2007,Microsoft Office Word 2007,和Microsoft Office PowerPoint 2007采用了基于XML的文件格式,新的格式增强了文件与数据的管理能力,数据恢复能力,以及与业务线系统的互操作能力。它们是对早期版本的二进制文件的扩展。任何支持XML的应用程序都可以访问新文件格式当中的数据,并与之协同工作。这些应用程序并不需要成为Microsoft Office system或Microsoft产品的一部分。用户也可以使用标准的转换来提取或重新组织数据。另外,有关安全性的担忧也大大的降低,因为信息是存储在XML当中的,它从本质上来讲都是纯文本的。因此,数据可以没有任何障碍地通过企业防火墙进行传递。

注意:
不要将Office Open XML格式与Microsoft Windows XML Paper Specification格式相混淆。Office Open XML格式使用Open Packaging Conventions,XML Paper Specification (XPS)也使用它。但是,这两种格式在许多重要的方面是不同的。XPS是一个页面内的,固定的文档格式,它是在Microsoft Windows Vista操作系统当中所引入的。而Office Open XML格式是面向Office Word 2007,Office Excel 2007,和Office PowerPoint 2007的完全可编辑的文件格式。虽然它们在XML和ZIP压缩的使用方面有很多相似的地方,但是它们在文件格式的设计和使用目的上还是有着很大的不同。
更详细的信息请参考:http://www.microsoft.com/china/m ... rmats.mspx?mfr=true

为了打开一个Word 2007 XML文件

1. 创建一个临时目录来存储文件和它的部件。
2. 创建一个Word 2007文档,包括文本,图片,以及其它元素,保存为一个.docx文件。
3. 在文件名的末端添加一个.zip扩展名。
4. 双击文件。这时将会在ZIP应用程序当中打开该文件。您可以查看组成文件的每个部件。(可以不用winrar压缩工具打开,以windows默认的zip格式打开)
5. 将这些部件提取到刚才创建的临时目录当中。

这时就可以看到组成docx文件的所有XML格式的文件.这里需要大家详细阅读一下我上面给的链接的内容,现在我主要介绍一下在.net中处理word(2007)文档的一种方法,需要说明的是在.net frameword 2.0 中并没有提供相关的类来处理zip格式的文件,在.net framework 3.0中提供了一个类Package,所属的命名空间为System.IO.Packaging,因此在本例中要实现对word文档的处理必须安装.net frameword 3.0 或者 3.5,在引用中要添加对WindowsBase.dll的引用,这个DLL文件在windows 2003 系统里位于C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\目录下.
我做的这个例子是替换Word页脚中的链接,将http://www.google.cn/ 替换为http://www.pin5i.com/其它的处理可以用类似的方法来操作.下面是代码:

Code


以上代码复制后可以直接运行,只需在debug目录下创建一个word(2007)文档,并插入页脚,当然也可以更改一下代码里的设置. 该方法同样适用于Microsoft Office Excel 2007和Microsoft Office PowerPoint 2007,利用这种方法可以实现以操作XML文件的方式对以上三种文档进行操作,比如去掉文档中的写保护,替换或删除部分内容等.此方法占用内存少,执行效率也比较高.


文/qiangzi0303  出处/博客园

 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

Attribute在.net编程中的应用(一)
Attribute在.net编程中的应用(二)
Java、.NET,为什么不合二为一?
.NET 框架中的 Factory 模式
.NET和JAVA的跨平台,程序员很期望
.NET还是JAVA,一个中国程序员的评论
NBearMapping - 开源通用对象映射组件v1.0.0.0 beta
ObjectBuilder中WeakRefDictionary使用模式浅析
面向对象的应用服务层设计
Sending email with an embedded image through ASP.NET
邮件发送类,支持HTML格式,支持优先级设置
使用.NET发送邮件
1
查看完整版本: .Net 中处理Word(2007)文档
Modify by pin5i DZNT_ExpandPackage 2.1.3295 2007-2009 pin5i.com
 Total Unique Visitors: