畅享博客 > 非鱼评影 > 程序设计 > 使用C#控制Word文件的内容
2006-3-25 14:37:06

使用C#控制Word文件的内容

工作需要,研究了一下下,找到些资料,做个笔记。

VS跟Word是一家的,所以这个联合应该也属于比较简单的,当年的VB就可以很容易的访问Office文件,而Delphi则要自己处理生成很多中间代码。

新建一个项目,添加一个引用,在COM组件中找到Microsoft Word 11,就是Office 2003的东西了,引用生成以后会添加三项内容到项目中,Word项包含了操纵Word文件所有的信息,包括一些常量定义,属性,方法等等。VBIDE和Core都没有用到。基本上也不需要使用using语句,因为如果少了自动提示反而会很麻烦。

首先得到Word程序和Word文档的变量:
??private Word.ApplicationClass oWordApplic;?
??private Word.Document oDoc;?

Word程序一定要用ApplicationClass,而不是Application,后者你也可以创建对象,但是到退出的时候就会报错。
???oWordApplic = new Word.ApplicationClass();
???oDoc = oWordApplic.Documents.Open();

关键问题在于这个Open函数,不同版本的Word具有不同数量的参数,2003版有16个,XP版有15个!这些参数因为要在.net和COM中间传递,所以所有的参数都是ref object的形式。这里我们需要定义四个变量:
???object fileName = strFileName;
???object readOnly = false;
???object isVisible = true;
???object missing = System.Reflection.Missing.Value;

输入Open函数的时候会自动提示参数名称,除了前面三个直接输入名称,其它不认识的变量全部用missing来替代,这样就可以打开一个现有的文件了,再使用oDoc.Activate()就可以对其进行操作了。新建文章使用另一个函数oDoc = oWordApplic.Documents.Add(),它有四个变量,全部是missing。

打开以后要修改文件的话使用oWordApplic变量,而不是Doc变量,只有在保存的时候才需要使用Doc变量。

实际上,你可以到Word里面去录制一段宏,看看它的代码,然后在C#里调用它所执行的那个函数,包括查找,替换,插入,编辑等等等等。宏的一个特点是先准备好所有的变量,然后直接执行过程,但是在C#中调用的时候,它的那些变量都是通过括号里的变量的形式传递给过程的,你要先定义好这个过程所需要的变量(必要的变量名称在宏里面都可以看出来,不必要的那些都可以用missing来代替),只要记住所有的变量都是object类型,而且都要加上ref就可以了。

还有一些必需的常量值参数,都在Word命名空间里,以Wd开头的,基本上都可以根据名字找到你想要的东西,实在是很方便。为了更方便起见,自己写了一专门处理它的类,在程序中调用的时候只要new一个这个类,然后使用Open,InsertText,InsertPicture等等方法就可以了。


推荐到鲜果:

评论


发布者 匿名用户
2008-4-26 13:28:44


您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)