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

C# 打开包含合并字段并从C连接到数据源的Word文档#,c#,interop,ms-word,ms-office,mailmerge,C#,Interop,Ms Word,Ms Office,Mailmerge,我有一个函数,可以在指定位置用Word打开文档: static void OpenWordDocument(string fileName) { Type applicationType = Type.GetTypeFromProgID("Word.Application"); object applicationObject = Activator.CreateInstance(applicationType); object documentsObject = applicationTyp

我有一个函数,可以在指定位置用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 });
}
它在Office2003中运行良好,但在使用Office2010的系统上打开文档时,文档似乎无法连接到数据源。
这可能是什么原因造成的?打开文档时是否丢失了任何可能会阻塞连接的属性?

我们通过一些变通方法解决了这个问题~

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

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

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

您是否已插入Word 2010的注册表项,如以下文章所述


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

我必须对此进行调查。谢谢你的信息