#c# #office-interop #com-interop
#c# #office-interop #com-взаимодействие
Вопрос:
Я работаю над требованием прочитать документ Word и заполнить данные в таблицу Datatable или Excel с использованием кода C #.
Я использую Visual Studio 2015 и Office 2016 на своем компьютере. В моем решении я добавил ссылки на библиотеку объектов Microsoft Word 16.0 для работы с документами Word. Но когда я развернул код рабочего сервера решения, он не работает, и я получаю ошибку типа
«Система.Исключение InvalidCastException: невозможно привести COM-объект типа ‘System.__ComObject’ к типу интерфейса’ Microsoft.Офис.Interop.Word.Приложение ‘. Эта операция завершилась неудачно, поскольку вызов QueryInterface в COM-компоненте для интерфейса с IID ‘{00020970-0000-0000-C000-000000000046}’ завершился неудачно из-за следующей ошибки: Библиотека не зарегистрирована. (Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).»
В рабочей среде мы используем Office 2010. Я думаю, что это вызывает проблему из-за проблем с совместимостью между ссылками 2010 и 2016
Возможно ли добавить ссылку на Office 2010 из системы, в которой установлен office 2016 из Visual Studio 2015?
Не могли бы вы, пожалуйста, кто-нибудь сообщить мне, как исправить эту проблему
Комментарии:
1. @Mikael это другая ошибка. Ошибка операционной системы
Library not registered
, что означает, что Word либо не установлен, либо приложение запрашивает неправильную версию2.
production server
? Word не должен запускаться на сервере, определенно не на веб -серверах, поскольку для этого требуется лицензия для каждого пользователя браузера. Неважно, что для каждой операции потребуется отдельный экземпляр Word, что быстро истощит оперативную память сервера.3. Что касается версии — ваш код явно запрашивает Word 2016, когда установлен только Word 2010. 6 лет достаточно для внедрения новых API и удаления устаревших. Если вы собираетесь использовать нелицензионную старую версию Word 1) не делайте этого 2) Замените библиотеку объектов Word 16.0 на ту, которая поддерживает версию Word, которую вы хотите использовать
4. @PanagiotisKanavos: фактическая проблема заключается в том, что код был реализован в Visual Studio 2015 в системе, в которой был установлен 2016. Итак, когда я добавляю справочную библиотеку объектов Microsoft Word 16.0 в соответствии с доступностью. Но на самом деле код должен выполняться в системе, в которой был установлен office 2010. есть ли какая-либо возможность, что мы можем добавить ссылку на Word (любую версию), которая может быть совместима с версиями Office 2010 t0 2016. если да, то как мы можем их добавить