关于本站
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); }
}
}
}