2010-12-10 9 views
23

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs() Methode funktioniert gut auf Windows Server 2003 und auf XP auch, aber nicht auf Windows Server 2008. Ich kann es kopiert, da sie alle und Berechtigungen des Dll gab istSystem.Runtime.InteropServices.COMException (0x800A03EC)

Ich habe probierte auch alle im Internet gegebenen Lösungen aus, wie z. B. Kultureinstellungen und DCOM-Berechtigungen.

Erste folgende Fehler:

System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC

bei

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local)

Bitte helfen ..!

+0

"Der folgende Code ..." - was für Code? Ich glaube, du hast vergessen, deinen Code zu posten. –

+0

Hallo Edited mein Qn ..! –

Antwort

42

Gefunden Antwort ....... !!!!!!!

Offiziell wird Microsoft Office 2003 Interop auf Windows Server 2008 von Microsoft nicht unterstützt.

Aber nach vielen Permutationen & Kombinationen mit dem Code und der Suche, stießen wir auf eine Lösung, die für unser Szenario funktioniert.

Die Lösung besteht darin, den Unterschied zwischen der Art und Weise, wie Windows 2003 und 2008 seine Ordnerstruktur verwaltet, zu schließen, da Office Interop vom Desktop-Ordner für das Öffnen/Speichern von Dateien abhängig ist. Das System 2003 enthält den Desktop-Ordner unter Systemprofil, der 2008 nicht vorhanden ist.

Also wenn wir diesen Ordner auf 2008 unter der jeweiligen Hierarchie wie unten angegeben erstellen; Das Büro Interop kann die Datei nach Bedarf speichern. Dieser Desktop-Ordner ist erforderlich unter

C erstellt werden: \ Windows \ System32 \ config \ Systemprofilen

UND

C: \ Windows \ SysWOW64 \ config \ Systemprofile

Das ist für mich gearbeitet ...

auch prüfe, ob .NET 1.1 installiert ist, weil sein von Interop benötigt und ot vorinstalliert mit Windows Server 2008

Oder Sie können auch SaveCopyas verwenden() -Methode ist nur als String Nargumentargument)

Danke Jungs ..!

+0

Ich habe gerade SaveCopyas() anstelle von SaveAs() verwendet und impersonate in web.config hinzugefügt und es funktioniert! –

+1

Wie haben Sie SaveCopyAs() anstelle von SaveAs() verwendet, wenn die Methoden verschiedene Parameter haben, zB das Format speichern? – Muflix

+0

Ich habe die Desktop-Ordner erstellt und es funktioniert wieder einwandfrei. Danke, also pass auf, ich hätte das Problem nie selbst gefunden. – benshabatnoam

4

Einige googeln zeigt, dass Sie möglicherweise eine beschädigte Datei haben:

http://bitterolives.blogspot.com/2009/03/excel-interop-comexception-hresult.html

und dass Sie sagen können Excel es öffnen sowieso mit dem CorruptLoad Parameter, mit so etwas wie ...

Workbook workbook = excelApplicationObject.Workbooks.Open(path, CorruptLoad: true); 
+0

Ich hatte das gleiche Problem. Das waren Mülldaten in der Excel-Datei. Öffnen Sie manuell in Excel und entfernte die schlechten Daten, wenn alles funktioniert. Ich habe es auch mit dem CorruptLoad versucht. Das hat funktioniert –

2

Ich sah den gleichen Fehler beim Versuch, eine Excel-Datei zu speichern. Der Code funktionierte gut, als ich MS Office 2003 verwendete, aber nach dem Upgrade auf MS Office 2007 habe ich angefangen, dies zu sehen. Es würde immer passieren, wenn ich versuchte, eine Excel-Datei auf einem Server oder Remote-Fie zu speichern.

Meine Lösung, obwohl rudimentär, funktionierte gut. Ich hatte gerade das Programm die Datei lokal speichern, wie auf dem Laufwerk C: \ des Benutzers. Dann benutze die "System.IO.File.Kopieren (Datei, Ziel, überschreiben) "Methode, um die Datei auf den Server zu verschieben. Dann können Sie die Datei auf dem C: \ Laufwerk löschen.

Funktioniert gut und einfach. Aber zugegebenermaßen nicht der eleganteste Ansatz.

hoffe, das hilft! ich hatte keine Lösungen im Web, bis diese Idee eine Tonne Probleme, tauchte in meinen Kopf zu finden.

0

Für all die, die dieses Problem noch erlebt, ich unten nur 2 Tage lang Tracking Das verdammte Ding. Ich bekam den gleichen Fehler, als es keine Reihen im Datensatz gab. Scheint offensichtlich, aber Fehlermeldung ist sehr dunkel, folglich 2 Tage.

+0

Sie haben nicht gelöst , Recht? – daniele3004

+0

@ daniele3004 Wenn ich mich richtig erinnere, war das Problem, dass ich Null Anzahl der Zeilen bekam. Also habe ich nach 'numberOfRows> 0' gesucht und das Problem wurde behoben. – trailmax

1

Es ist eine Erlaubnis Problem, wenn IIS ausgeführt hatte ich dieses Problem und ich löste es auf diese Weise

ich auf Ordner ging

C: \ Windows \ System32 \ config \ Systemprofile

und

C: \ Windows \ SysWOW64 \ config \ Systemprofile

sind geschützte Systemordner, sie haben normalerweise das Schloss.

Rechts-Klick-> Kartensicherheit-> Klicken Sie auf Bearbeiten-> Hinzufügen untente "Autenticadet Benutzer" und zuweisen Sie Berechtigungen.

An diesem Punkt ist alles gelöst, wenn Sie immer noch Probleme alle Berechtigungen für „Jeder“ haben versuchen, dies zu geben

5

Versuchen Sie, wie es für mich gearbeitet ...

  1. Gehen Sie auf „Start“ -> "Ausführen" und geben Sie "dcomcnfg" ein
  2. Dies wird das Komponenten-Service-Fenster öffnen, erweitern Sie "Console Root" -> "Computer" -> "DCOM Config"
  3. Finden Sie "Microsoft Excel-Anwendung" in der Liste der Komponenten.
  4. Klicken Sie mit der rechten Maustaste auf den Eintrag und wählen Sie "Eigenschaften"
  5. Gehen Sie auf die Registerkarte "Identität" im Eigenschaftendialog.
  6. Wählen Sie "Der interaktive Benutzer."

mit freundlicher Genehmigung von Last paragraph mentioned in here

Verwandte Themen