关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
上一篇博文写的是获取Excel的一些公共对象和方法。这次再补充获取Word的公共对象和方法等。
同样,为了方便迁移,需要将Word的Application当作参数传递进去:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using Word = Microsoft.Office.Interop.Word; namespace DTPT.Base //命名空间自己改成自己的 { /// <summary> /// 获取Office对象 /// </summary> public class ClsWordObject { //构造函数 public ClsWordObject(Word.Application app) { this.App = app; } /// <summary> /// 获取或设置Word的Application /// </summary> public Word.Application App { get; set; } public Word.Application Application { get { return Globals.ThisAddIn.Application; } } /// <summary> /// 获取全部文档 /// </summary> public Word.Documents Documents { get { return this.App.Documents; } } /// <summary> /// 获取当前活动的文档 /// </summary> public Word.Document ActiveDocument { get { if (this.Documents.Count > 0) return this.App.ActiveDocument; else return null; } } /// <summary> /// 获取选择的对象 /// </summary> public Word.Selection Selection { get { return this.App.Selection; } } } }
目前,我用得比较多的是这几个对象。
另外,我还添加了一个获取Word的hwnd句柄方法。在Excel中的Application有hwnd属性,而Word没有。
这个需要通过API去获取。使用Spy++查得如下图:
我打开了两个Word文档,得到两个同样的类名。既然有类名,那么可以使用FindWindow的API函数去获取句柄:
[DllImport("user32.dll", EntryPoint = "FindWindow")] private static extern int FindWindow(string lpClassName, string lpWindowName); /// <summary> /// 获取当前Word的句柄 /// </summary> public static int Hwnd { get { return FindWindow("OpusApp", null); } }
全部代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using Word = Microsoft.Office.Interop.Word; namespace DTPT.Base //命名空间自己改成自己的 { /// <summary> /// 获取Office对象 /// </summary> public class ClsWordObject { //构造函数 public ClsWordObject(Word.Application app) { this.App = app; } /// <summary> /// 获取或设置Word的Application /// </summary> public Word.Application App { get; set; } public Word.Application Application { get { return Globals.ThisAddIn.Application; } } /// <summary> /// 获取全部文档 /// </summary> public Word.Documents Documents { get { return this.App.Documents; } } /// <summary> /// 获取当前活动的文档 /// </summary> public Word.Document ActiveDocument { get { if (this.Documents.Count > 0) return this.App.ActiveDocument; else return null; } } /// <summary> /// 获取选择的对象 /// </summary> public Word.Selection Selection { get { return this.App.Selection; } } [DllImport("user32.dll", EntryPoint = "FindWindow")] private static extern int FindWindow(string lpClassName, string lpWindowName); /// <summary> /// 获取当前Word的句柄 /// </summary> public static int Hwnd { get { return FindWindow("OpusApp", null); } } } }