Ich habe eine C # -WPF (.NET 4.0) -Anwendung, die Excel-Interop verwendet, um Daten aus einer Excel-Datei zu lesen.
Wenn ich diese App auf meinem Entwicklungscomputer mit Excel 2007 ausführe, funktioniert das problemlos. Wenn ich es auf einem anderen Computer ausführe, auf dem Excel 2010 installiert ist, schlägt die folgende Fehlermeldung fehl:
System.Runtime.InteropServices.COMException (0x80040154): Das Abrufen der COM-Klassenfactory für Komponente mit CLSID {00024500-0000-0000-C000-000000000046} ist aufgrund des folgenden Fehlers fehlgeschlagen: 80040154 Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Der Fehler tritt auf, wenn versucht wird, ein Microsoft.Office.Interop.Excel.Application
-Objekt wie in:
Mein Projekt hat einen Verweis auf Microsoft.Office.Interop.Excel.dll
(Version 14.0.0.0, Laufzeitversion v2.0.50727), das sich in folgendem Verzeichnis befindet:
C: \ Programme \ Microsoft Visual Studio 10.0 \ Visual Studio-Tools für Office \ PIA \ Office14 \ Microsoft.Office.Interop.Excel.dll
Ich habe versucht, die App mit den Standardeinstellungen für die referenzierte DLL auszuführen:
Ich habe auch versucht, die App mit den folgenden Einstellungen für die referenzierte DLL auszuführen:
Aber auf der Maschine mit Office 2010 funktionierte keiner dieser Versuche.
Weitere Hinweise: Der Computer mit Office 2010 ist 64-Bit mit Windows 7. Mein Entwicklungscomputer ist X86 mit Windows XP.
Frage
Was verursacht die Ausnahme "Klasse nicht registriert" und wie behebe ich sie?
Bearbeiten
Als Reaktion auf Alex 'Antwort habe ich versucht, die App als Any CPU, X86 und X64 zu bauen, aber das machte keinen Unterschied. Ich bekomme immer noch den gleichen Fehler "Klasse nicht registriert".
Bearbeiten 2
Habe gerade die App auf einem 32-Bit-Rechner mit Office 2010 ausprobiert. Keine Fehler. Es könnte also etwas mit der bestimmten Maschine nicht stimmen, oder es könnte die Kombination von 64-Bit und Office 2010 sein.
Bearbeiten Sie 3
Okay, jetzt habe ich es auf einer anderen 64-Bit-Maschine mit Office 2010 getestet. Wieder keine Fehler. Ich denke, das bedeutet, dass etwas mit der bestimmten Maschine nicht stimmt und es nicht an meiner Software liegt. Ahh Programmierung.
Vorläufige Antwort: meine Software war in Ordnung und etwas stimmte nicht mit dem Setup auf dieser bestimmten Maschine.
Bearbeiten
Ich habe gerade etwas herausgefunden, das wahrscheinlich die Ursache des Problems ist. Das Problemgerät verfügt über Office, es ist jedoch als Click-to-run (läuft aus dem Internet) anstatt MSI-basiert (wird von einer EXE ausgeführt). Dies bedeutet, dass bestimmte Registrierungseinstellungen, DLLs, Komponenten usw. für Microsoft.Office.Interop.Excel
nicht verfügbar sind, daher schlägt es fehl.
Bearbeiten 2
Das war definitiv das Problem. Gerade auf eine vollständige MSI-basierte Installation von Office aktualisiert, und alles funktioniert super.
Bearbeiten Sie 3
Dies wurde als Fehler zu Microsoft Connect hinzugefügt:
Tags und Links c# dll excel com excel-interop