Проблемы с Microsoft Excel COM Automation - PullRequest
3 голосов
/ 16 сентября 2010

Итак, я написал метод в продукте моей компании полтора года назад, который использует автоматизацию 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

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

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

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

1 Ответ

1 голос
/ 16 сентября 2010

Версия 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.

Если бы я был вами, я бы сначала проверил это.

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

...