Ich versuche, eine Excel-Arbeitsmappe zu öffnen und versuche, ein Arbeitsblatt darin zu bekommen. Excapp.workbooks.Open Zeile wirft eine Ausnahme als
System.Runtime.InteropServices.COMException von HRESULT: 0x800A03EC bei Microsoft.Office.Interop.Excel.Workbooks.Open
Hier ist mein Code:
%Vor%StrWbPath ist mein Excel-Speicherort. Ich verweise auf Excel 2007 und fügte Microsoft.office.interop.excel der Version 12.0.0.0 hinzu.
(Sorry für die Beantwortung dieser alten Frage, aber es ist google Ergebnis # 1 für dieses Problem und die richtige Antwort fehlt).
Der Fehler tritt auf, weil Excel denkt, dass die Arbeitsmappe beschädigt wurde. Beim Öffnen der Excel-Datei sagt der letzte Parameter Excel, wie er mit dieser Situation umgehen soll. Übergeben Sie Microsoft.Office.Interop.Excel.XlCorruptLoad.xlExtractData
, um sie anzuweisen, die Daten abzurufen (Dies öffnet ein Popup, das dem Benutzer mitteilt, dass Excel versucht hat, die Daten zu extrahieren, wenn die Datei beschädigt ist).
Ich habe jedoch festgestellt, dass dieses Problem auch dann auftreten kann, wenn die Arbeitsmappe, die Sie öffnen möchten, eine andere Ländereinstellung hat als Ihre Excel-Datei (wurde auf einem Computer mit einer anderen Spracheinstellung gespeichert) ODER wenn Ihr System nicht über die Ländereinstellung en-us verfügt .
Obwohl das extrem dumm ist, ist es leicht zu überwinden. Für mich bestand die Lösung darin, das aktuelle Gebietsschema vor dem Öffnen der Datei auf en-us zu setzen:
%Vor%Dank geht an diese Seite
Was passiert, wenn Sie System.Reflection.Missing.Value anstelle von Type.Missing ausprobieren?
Grüße,
M.
Welche Klasse benutzen Sie?
%Vor%wenn dies dann versucht, es in
zu ändern %Vor%Tags und Links c# excel-2007