2012-03-25 4 views
3

In meiner Anwendung möchte ich in der Lage sein, eine Excel-Datei zu öffnen, die bereits existiert, und Informationen zu dieser Datei hinzufügen. Ich verwende die Microsoft Interop-Bibliotheken. Mir ist aufgefallen, dass Sie beim Erstellen einer neuen Tabelle mit Hinzufügen und dann Speichern die Datei so einstellen können, dass sie sich im Exklusivmodus befindet, bis Sie die Excel-Anwendung schließen.Öffnen Sie eine Excel-Datei im exklusiven Modus mit Interop in C#

Allerdings habe ich keine Möglichkeit gefunden, das gleiche zu tun, wenn Sie eine vorhandene Datei öffnen. Der Grund, warum ich das tun möchte, ist, weil, wenn ich die Excel-Datei öffne, während meine Anwendung geöffnet ist, dann bekomme ich eine Ausnahme. Ich gehe davon aus, dass beim Öffnen der Excel-Datei mit Excel automatisch im Exklusivmodus geöffnet wird.

Ich habe zwar die Datei geöffnet und dann saveas, aber es hat nicht funktioniert.

private object missing=Type.Missing; 
workbook = workbooks.Open(excelfilename,missing, false, missing, missing, missing,missing,missing,missing,missing,false, missing,missing, missing, missing); 
workbook.SaveAs((String)excelfilename, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, Excel.XlSaveConflictResolution.xlLocalSessionChanges, missing, missing, missing, missing); 

Ich erhalte die Ausnahme später im Code:

Excel.Range testrange = sheet.get_Range(rangetext); 

Die Ausnahme, die ich bekommen habe ist ein COMException "Ausnahme von HRESULT: 0x800401A8".

+1

Sie haben bereits exklusiven Zugriff beim Öffnen einer vorhandenen Datei. Sie müssen ReadOnly verwenden, um die Freigabe zu ermöglichen. Die Ausnahme hat damit wenig zu tun. Nimm die letzten 4 Hexadezimalziffern und wandle sie in Dezimalzahlen um, google dann, indem du "Excel error" davor stellst. Viele Treffer. –

+0

Auch wenn dies der Fall ist, wenn ich die Datei mit Excel öffnen, während die Anwendung ausgeführt wird, benachrichtigt es mich nicht, dass es im schreibgeschützten Modus ausgeführt werden kann. Wenn ich meine eigene Tabellenkalkulation erstelle und saveas verwende, habe ich das Problem nicht, und Excel kann die Datei nur im schreibgeschützten Modus öffnen. – user1291263

+0

Verwenden Sie zwei verschiedene 'Excel.Application'-Instanzen oder nur eine? – code4life

Antwort

0

Sie zu this article für vollständige Beispiel gehen könnten, wie eine Excel-Datei öffnen/neues Blatt hinzufügen/get Bereich & Satz Eigenschaften mit Microsoft Interop-Bibliothek