Błąd klasy niezarejestrowanej podczas tworzenia skoroszytu programu Excel w języku C #

Gdy próbuję uzyskać dostęp do arkusza kalkulacyjnego Excel przy użyciu następującego kodu, pojawia się błąd „Biblioteka nie jest zarejestrowana” podczas definiowania obiektu skoroszytu wrkbuk przy użyciu C # z Visual Studio 2012 z zainstalowanym pakietem Office 2007 (wersja 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();

Szczegóły błędu są

System.InvalidCastException był nieobsługiwany HResult = -2147467262
Message = Nie można przesłać obiektu COM typu „Microsoft.Office.Interop.Excel.ApplicationClass” do interfejsu typu „Microsoft.Office.Interop.Excel._Application”. Ta operacja nie powiodła się, ponieważ wywołanie QueryInterface składnika COM dla interfejsu z IID '{000208D5-0000-0000-C000-000000000046}' nie powiodło się z powodu następującego błędu: Biblioteka nie została zarejestrowana. (Wyjątek od HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)). Źródło = mscorlib

Stworzyłem odwołanie do Microsoft.Office.Interop.Excel.dll w pakiecie Office 14 Primary Interop Assembly, który jest dostarczany z VS 2012, a także do wersji dll pakietu Office 12 i nie rozwiązuje problemu. Próbowałem zarejestrować dll z regazmem, ale to też nie pomaga.

Mogę utworzyć arkusz wrksht w następującym wierszu OK z bibliotekami Office 14 i Office 12, więc problem wydaje się mieć wpływ tylko na definicję skoroszytu.

17 grudnia 2013 r

Próbowałem ponownej instalacji pakietu Office 2007 bezskutecznie, ale znalazł to rozwiązanie, które działało. Było na

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

Problem stanowi kod z wielu wersji pakietu Office - miałem kod z pakietu Office 14, prawdopodobnie pochodzący z instalacji VS 2012

Podejrzewam, że VS 2012 RC zainstalował biblioteki typu Office 2013, a teraz są zarejestrowane zduplikowane wersje. Dostałem ten konkretny komunikat o błędzie

(„nie można przesłać _Application” .... 'TYPE_E_LIBNOTREGISTERED ”)

po niechlujnym odinstalowaniu, a następnie ponownej instalacji starszej wersji pakietu Office. Rozwiązałem go, postępując zgodnie z radą innego wątku na forum, którego niestety nie mogę znaleźć ... zasadniczo przeszukałem rejestr w poszukiwaniu błędu CLSID w komunikacie o błędzie, więc{00020970-0000-0000-C000-000000000046}. Klucz rejestru zawierał dwa klucze, z których jeden nazywał się „TypeLib”, który z kolei zawierał inny identyfikator CLSID dla biblioteki typów. Następnie przeszukałem rejestr, zaczynając od początku, dla tego drugiego identyfikatora CLSID, który doprowadził mnie do odpowiedniej biblioteki typów interop. Miał dwa wpisy .... 8.3 i 8.4, większa liczba odpowiadająca późniejszej wersji pakietu Office .... którą usunąłem ... i od razu była w stanie uruchomić mój program.

questionAnswers(3)

yourAnswerToTheQuestion