0

我有一个函数可以在 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 的系统上打开文档时,该文档似乎无法连接到数据源。这可能是什么原因造成的?打开可能阻止连接的文档时,我是否缺少任何属性?

4

2 回答 2

1

您是否按照以下文章中的说明插入了 Word 2010 的注册表项?

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

即你可能已经有 2003 年的正确条目。

于 2012-06-11T16:34:57.783 回答
0

我们通过一些解决方法解决了它~

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

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

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

于 2012-06-11T15:34:44.623 回答