Когда я пытаюсь получить доступ к электронной таблице 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 безрезультатно, но нашел это решение, которое сработало. Это было на
Проблема - это код из нескольких версий 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.... которую я удалил... и сразу смог для запуска моей программы.