Excel-Interop funktioniert auf dem Computer mit Office 2007, schlägt aber auf dem Computer mit Office 2010 fehl

8

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:

zu erstellen %Vor%

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:

  • Kopieren Sie Lokal = Falsch
  • Einbetten von Interop-Typen = True
  • Spezifische Version = Wahr

Ich habe auch versucht, die App mit den folgenden Einstellungen für die referenzierte DLL auszuführen:

  • Kopieren Sie Local = True
  • Interop-Typen einbetten = Falsch
  • Spezifische Version = Wahr

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.

    
devuxer 19.05.2011, 00:58
quelle

1 Antwort

5

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:

Ссылка

    
devuxer 19.05.2011, 21:57
quelle

Tags und Links