打开包含合并域并从 C# 连接到数据源的 Word 文档

本文关键字:连接 数据源 文档 Word 包含 合并 | 更新日期: 2023-09-27 18:36:53

我有一个函数,可以在Word中指定位置打开文档:

static void OpenWordDocument(string fileName)
{
Type applicationType = Type.GetTypeFromProgID("Word.Application");
object applicationObject = Activator.CreateInstance(applicationType);
object documentsObject = applicationType.InvokeMember("Documents", System.Reflection.BindingFlags.GetProperty, null, applicationObject, null);
applicationType.InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty, null, applicationObject, new object[] { true });
Type documentsType = documentsObject.GetType();
object documentObject = documentsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, documentsObject, new Object[] { fileName });
}

它适用于 Office 2003,但在使用 Office 2010 的系统上打开文档时,文档似乎无法连接到数据源。可能是什么原因造成的?打开文档时是否缺少任何可能阻止连接的属性?

打开包含合并域并从 C# 连接到数据源的 Word 文档

是否已按照以下文章中所述插入 Word 2010 的注册表项?

http://support.microsoft.com/kb/825765

也就是说,您可能已经拥有 2003 年的正确条目。

我们用一些解决方法解决了它~

我们没有通过互操作程序集并创建 Word 的实例,而是创建了一个运行打开文档的.bat文件的进程:x

static void OpenWordDocument()
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = @"fileName.bat";
proc.Start();
}

这不是一个理想的解决方案,所以任何其他解决方案都会很棒!