Открытие документа Word, который содержит поля слияния и подключается к источнику данных из C #

У меня есть функция, которая открывает документ в 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, документ не может подключиться к источнику данных. Что может быть причиной этого? При открытии документа отсутствуют какие-либо свойства, которые могут блокировать соединение?


person mechaman64    schedule 11.06.2012    source источник


Ответы (2)


Вы вставили запись в реестр для Word 2010, как описано в следующей статье?

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

То есть у вас уже может быть правильная запись за 2003 год.

person Community    schedule 11.06.2012
comment
Я должен это исследовать. Спасибо за информацию - person mechaman64; 21.06.2012

Мы решили это с помощью небольшого обходного пути ~

Вместо того, чтобы проходить сборки 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();
}

Это не идеальное решение, поэтому подойдут любые другие решения!

person mechaman64    schedule 11.06.2012