刚在研究研究怎么可以在.NET程序中把WORD文档另存为XPS文件,学习了一些概念和操作,马上记录下来吧,进入正题。
1.添加与WORD互操作的类库,里面包含着WORD对象模型的.NET表示:
一看就知道微软在建立OFFICE与.NET的互操作平台上花了不少的努力,看这么多的DLL就猜到了。选择了Microsoft.Office.interop.Word类库后,就可以实现一系列与WORD的互操作。接下来还要在程序中引用相应的命名空间:
using Microsoft.Office.Interop.Word;
2.创建WORD进程对象,WORD并不代表一个或两个文档文件,它是这些文档文件的处理环境,或者说WORD也是一个虚拟机,不过就是一个只进行文档处理的虚拟机。于是要与WORD互操作实现文档处理,首先要创建其进程环境:
Application appClass = new Application();
appClass.Visible = true;
创建这个WORD进程还是比较简单的。Visible属性可以设置该WORD进程是否UI可见,设置为true的话,效果就跟我们平常打开WORD文档后一样。
3.打开WORD文档, 我的目的是要把一份WORD文档另存为其他格式的文件,当然我可以重新编辑一个WORD文档,但是我选择打开一份已有的WORD文档作为代替,因为这样可以忽略关于WORD文档编辑的程序难点:
代码 Object missing = System.Reflection.Missing.Value;
Document wordDoc = new Document(ref missing, ref missing, ref missing, ref missing);
object fileName = @"E:\test";
wordDoc = appClass.Documents.Open(ref fileName,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing);
说实在,刚开始研究这玩意,看到那么多奇怪的参数真是非常不习惯。Document是WORD对象模型中的文档类,当然不要和其他其他命名空间下的Document混淆了。构造这个Document对象可以不使用任何有效的构造参数,默认就可以。然后就是通过WORD进程对象打开一份已有的WORD文档了。打开的方法中最重要当然是指定文档所在的路径了,也就是第一个参数,由于WORD对象模型中很多方法的参数都是ref object类型,于是我只能继续入乡随俗了(注意路径中没有文件后缀名,这个是可选的),其他的参数继续默认。来到这里就已经打开了一份已有的WORD文档。
4.选择保存的文件格式,调用SaveAs方法:
代码 object format = WdSaveFormat.wdFormatXPS; object savePath = @"E:\test.xps";
wordDoc.SaveAs(ref savePath, ref format, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
所有支持的保存文件的格式都在WdSaveFormat枚举类型中定义,这个枚举类型的定义明显是受到当前机器上安装的OFFICE版本影响,我的是。定义了路径名,选择了保存文件格式的枚举类型,就可以调用Document对象的SaveAs方法,并在前两个参数中指定,其他参数使用默认值。就这样就完成了使用.NET对WORD文档进行文件格式转换的目的。
Thanks for reading! nice!