Не удается открыть документ Office с Interop

1

Код:

ApplicationClass projectApp = new ApplicationClass();

if (projectApp.FileOpen(path, true, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
PjPoolOpen.pjDoNotOpenPool, Missing.Value, Missing.Value, Missing.Value, Missing.Value))
{
    projects = new List<Project>(projectApp.Projects.Cast<Project>());
    foreach (Project project in projects)
    {
        MSProjectProject msProject = new MSProjectProject();

        msProject.Author = project.Author.ToString(); // ERROR HERE
        msProject.Name = project.Name;
    }
}

Исключение:

Невозможно передать COM-объект типа "Microsoft.Office.Interop.MSProject.ProjectClass" в тип интерфейса "Microsoft.Office.Interop.MSProject._IProjectDoc". Эта операция завершилась неудачно, потому что вызов QueryInterface на COM-компоненте для интерфейса с IID '{00020B00-0000-0000-C000-000000000046} не удался из-за следующей ошибки: сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA).

Исключение 2: (Этот не попадает в блок try)

DisconnectedContext был обнаружен

Переход в COM-контекст 0x265048 для этого RuntimeCallableWrapper не удалось со следующей ошибкой: запрошенный объект не существует. (Исключение из HRESULT: 0x80010114). Обычно это связано с тем, что контекст COM 0x265048, где был создан этот RuntimeCallableWrapper, отключен или занят чем-то другим и не может обработать переход к контексту. Прокси-сервер не будет использоваться для обслуживания запроса на COM-компоненте, и вызовы будут напрямую передаваться на COM-компонент. Это может привести к повреждению или потере данных. Чтобы избежать этой проблемы, убедитесь, что все контексты COM/апартаменты/потоки остаются в живых и доступны для перехода к контексту, пока приложение не будет полностью выполнено с помощью RuntimeCallableWrappers, который представляет COM-компоненты, которые живут внутри них.

Когда я впервые получаю доступ к project генерируется исключение. Что я делаю не так?

Кроме того, я новичок в Interop, и это беспокоит меня, что когда я обращаюсь к файлу, он открывается с офисом. Разве нет возможности только просмотреть его содержимое и не открывать его?

Interop Runtime Версия: v2.0.50727;

Interop Version: 14.0.0.0;

Версия проекта: 2013 (15.0.4569.1504);

  • 0
    какую версию взаимодействия вы используете и какую версию проекта?
  • 0
    Interop Runtime Version: v2.0.50727; Версия взаимодействия: 14.0.0.0; Версия проекта: 2013 (15.0.4569.1504)
Показать ещё 2 комментария
Теги:
ms-project
office-interop
com-interop

1 ответ

0
Лучший ответ

Разрешение прост: прекратите использование Interop, это GARBAGE. Это беспорядочно, навсегда обрабатывает документы, открывает документы, прежде чем он сможет обработать их, а иногда просто не работает и не скажет вам, почему, если только это не так, и у вас есть проблемы, подобные выше, где никто не может помочь.

Хотя MPXJ реализует Java внутри.NET, он все же лучше Interop!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню