Подтвердить что ты не робот

Класс не зарегистрированная ошибка при создании книги Excel в С#

Когда я пытаюсь получить доступ к электронной таблице Excel, используя следующий код, я получаю ошибку "Библиотека не зарегистрирована" при определении объекта workbook wrkbuk с использованием С# из Visual Studio 2012 с установленной версией Office 2007 (вер. 12)

Microsoft.Office.Interop.Excel.Application excapp = new Microsoft.Office.Interop.Excel.Application();
        string bookname = @"C:\Users\Public\Documents\RECRUITMENT & SELECTION\MOVEMENTS\MOVEMENTS\Miscellaneous Documents\VacanciesREAL.xls";
        Workbook wrkbuk = excapp.Workbooks.Open(bookname); 
        Worksheet wrksht = new Worksheet();

Сведения об ошибке:

Исправление System.InvalidCastException было необработанным HResult = -2147467262 Message = Невозможно передать COM-объект типа "Microsoft.Office.Interop.Excel.ApplicationClass" в тип интерфейса "Microsoft.Office.Interop.Excel._Application". Эта операция завершилась неудачно, потому что вызов QueryInterface на COM-компоненте для интерфейса с IID '{000208D5-0000-0000-C000-000000000046} не удался из-за следующей ошибки: библиотека не зарегистрирована. (Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)). Источник = mscorlib

Я создал ссылку на Microsoft.Office.Interop.Excel.dll в Office 14 Primary Interop Assembly, которая поставляется с VS 2012, а также для версии dll Office 12 и не устраняет проблему. Я пробовал регистрировать dll с regasm, но это тоже не помогает.

Я могу создать рабочий лист wrksht в следующей строке ОК с DLL Office 14 и Office 12, поэтому проблема кажется только влияющей на определение рабочей книги.

17 декабря 2013 года

Попробовал переустановку Office 2007 безрезультатно, но нашел это решение, которое сработало. Это было на

http://social.msdn.microsoft.com/Forums/vstudio/en-US/d3f92da7-96d3-404b-89d0-d236800ceae5/vs-2012-rc-and-visual-studio-tools-for-office?forum=vsto

Проблема - это код из нескольких версий Office - у меня был код из Office 14, возможно, начиная с версии VS 2012

Я подозреваю, что VS 2012 RC установил тип Office 2013 библиотек, и что теперь зарегистрированы дублированные версии. я получил это конкретное сообщение об ошибке ( "невозможно выполнить _Application '....' TYPE_E_LIBNOTREGISTERED ') после беспорядочной деинсталляции, а затем переустановить более старую версию Office. Я решил это следуя советам другой темы форума, в которой я печально не удалось найти... в основном я искал реестр для CLSID в сообщение об ошибке, так, {00020970-0000-0000-C000-000000000046}. это раздел реестра содержал два ключа, один из которых назывался" TypeLib", который, в свою очередь, содержал другой CLSID для библиотеки типов. Затем я просмотрел реестр, начиная с начала снова, для этого второй CLSID, который привел меня к соответствующей библиотеке типа interop. Это имела две записи.... 8.3 и 8.4, большее число, соответствующее более поздняя версия Office.... которую я удалил... и сразу смог для запуска моей программы.

4b9b3361

Ответ 1

У меня была такая же проблема. Вот как я его исправил:

Перейдите в HKEY_CLASSES_ROOT\TypeLib\и найдите "Office.Interop.Excel".

Я нашел HKEY_CLASSES_ROOT\TypeLib\(guid)\1.8, но его дочерние узлы были пустыми! Я удалил его, потому что Office 15 не был установлен на этом компьютере и эй престо - это сработало.

Либо наш установщик проекта VSTO, либо наш собственный пользовательский установщик должен разместить там папку 1.8.

Я нашел решение здесь:

Ошибка доступа к компонентам COM

Ответ 2

Я подтвержу ответ @stuzor на двух машинах, с которыми я столкнулся.

История:

Windows7 64 bit
Office 2010 (32bit) 
Lync 2013 

HKEY_CLASSES_ROOT\TypeLib \, найдите "Office.Interop.Excel". Нашел едва существующую папку "1.8". После удаления функция в старом приложении VB.net начала работать немедленно.

Ответ 3

У меня была точно такая же проблема. Если вы установили новую версию Office и по какой-то причине вам нужно установить более старую версию, не удаляя ее (для моего случая мне просто нужно установить редактор фотографий Office XP), и это вызвало проблему.

Проведя 3 часа вверх и вниз, лучший способ - отремонтировать новую версию Office, и все возвращается к нормальной работе, как и должно быть.

Надеемся, что эта информация поможет, если у вас такой же или похожий сценарий.

Ответ 4

У нас была та же проблема.

Наша настройка такова:
Office 2010: Word и Excel но Office 2013: Outlook

Мы запустили программу установки для Office 2010 и выберите вариант восстановления. После этого все неправильные ключи в реестре для Word и Excel были удалены, и проблема была решена.

Ответ 5

Обнаруженный выше хакер реестра исправил ту же проблему для меня. Единственное различие заключалось в том, что у меня был 1,9 и 1,7 входа. Я удалил ключ 1.9, и моя проблема была исправлена.

Дополнительная информация:

ОС: Windows 10

Visual Studio Professional 2015

Приложение С# для Windows Form

Это было на моем рабочем ноутбуке. На каждой рабочей станции установлен Office 2010.

Некоторые другие вещи, которые я пробовал, чтобы DID NOT WORK были следующими:

Ремонт MS OFFICE

Переустановка MS OFFICE

Загрузка Microsoft Office 2010: первичные взаимодействия с Microsoft.

У меня также было несколько версий Microsoft.Office.Interop.Excel.dll на моем ноутбуке. Удаление предыдущих версий не устранило проблему.

Рад, что я пошел в STACKOVERFLOW.COM, потому что это место ROCKS!!!!!!