Проблемы с автоматизацией Microsoft Excel COM

Поэтому полтора года назад я написал метод в продукте моей компании, который использует COM-автоматизацию Excel 2007 для экспорта данных, только теперь я обнаружил, что он больше не работает на компьютерах в офисе.

Я проверил функциональность метода на своей машине и получил тот же результат.

Копнув глубже, я обнаружил, что когда я добираюсь до

var excel = Excel.Application

Если я добавлю наблюдение за объектом excel, я увижу, что каждое свойство генерирует исключение приведения.

Проведя небольшое исследование, я обнаружил кое-что о ключах реестра, которые могут мешать автоматизации. Мне удалось покопаться и удалить ключ реестра:

HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}\1.7

Со следующим строковым значением, определенным внутри:

"PrimaryInteropAssemblyName"="Microsoft.Office.Interop.Excel, Version=14.0.0.0

Затем я снова запустил тот же фрагмент кода, только на этот раз он работал отлично.

На других машинах в офисе, на которых я тестировал приложение, была та же ошибка, только я не смог исправить их таким же образом.

Кто-нибудь еще сталкивался с этим раньше?
Спасибо.


person stevenroberts    schedule 15.09.2010    source источник


Ответы (1)


Версия 14 Office — это Office 2010, поэтому я предполагаю, что ваш офис был обновлен с 2007 до 2010.

Теперь, если ваш компьютер является машиной разработчика, я ожидаю, что на вашем компьютере установлена ​​сборка Microsoft.Office.Interop.Excel, Version=14.0.0.0, и поэтому ваше исправление работает.

Однако я предполагаю, что на других машинах в офисе был развернут ваш код, поэтому на них будет развернута сборка Microsoft.Office.Interop.Excel, Version=12.0.0.0, но не развернута Microsoft.Office.Interop.Excel, Version=14.0.0.0.

Если бы я был тобой, я бы проверил это в первую очередь.

Возможно, было бы также полезно описать фактическую ошибку, которую вы получили в своем вопросе, но, надеюсь, мой ответ поможет.

person Enigmativity    schedule 16.09.2010
comment
Нет, на моем компьютере не установлены никакие продукты Office 2010, кроме SharePoint Designer. Возникающая ошибка выдается COM - DISP_E_MEMBERNOTFOUND. При отладке это, кажется, проявляется как недопустимое исключение приведения. - person stevenroberts; 16.09.2010
comment
@stevenroberts — в этом случае сборка взаимодействия Office 14 должна быть установлена ​​вместе с Visual Studio. В конце концов, если вы явно не установили сборку взаимодействия, она должна была откуда-то появиться, и вполне вероятно, что на клиентских машинах ее нет. Вы проверили их? - person Enigmativity; 16.09.2010