wake-up-neo.com

Speichern/Überschreiben vorhandener Excel-Dateien mit Excel Interop - C #

Gibt es eine Möglichkeit, Änderungen in einer Excel-Tabelle über das Excel-Interop zu speichern (in diesem Fall füge ich ein Arbeitsblatt hinzu), ohne dass der Benutzer aufgefordert wird, die vorhandene Datei mit den Änderungen zu überschreiben. Ich möchte nicht, dass der Benutzer die Kalkulationstabelle sogar in meiner Anwendung geöffnet sieht. Das Anzeigen eines Meldungsfelds, in dem er gefragt wird, ob die Datei überschrieben werden soll, erscheint sehr unpassend und möglicherweise verwirrend für den Benutzer. 

Ich verwende die Methode workbook.SaveAs (fileloaction). 

Hier initialisiere ich die COM-Referenzobjekte für das Excel-Interop.

private Excel.Application app = null;
    private Excel.Workbook workbook = null;

    public Excel.Workbook Workbook
    {
        get { return workbook; }
        set { workbook = value; }
    }
    private Excel.Worksheet worksheet = null;
    private Excel.Range workSheet_range = null;

Unten ist der Code, den ich zum Schließen/Speichern der Excel-Datei verwende. Die Zeile der Methode workbook.close () löst die nicht behandelte Ausnahme aus. 

 workbook.Close(true, startForm.excelFileLocation, Missing.Value);
            Marshal.ReleaseComObject(app);
            app = null;
            System.GC.Collect();
20
user1546315

Im Grunde ist alles, was Sie brauchen, ExcelApp.DisplayAlerts = False.

ExcelApp.DisplayAlerts = False
ExcelWorkbook.Close(SaveChanges:=True, Filename:=CurDir & FileToSave)

Hoffe das hilft

53
John Bustos

Nur dieser Code wird benötigt, um die Warnung oder die bereits verwendete Vorlage außer Kraft zu setzen

ExcelApp.DisplayAlerts = False

8

Ich weiß, dass dies ein alter Beitrag ist, aber ich wollte einen Weg zeigen, wie dies funktionieren kann, ohne in der Zukunft möglicherweise Frust zu verursachen. 

Was ich an der Verwendung nicht mag: ExcelApp.DisplayAlerts = False

Durch Setzen dieses Flags wird diese Eigenschaft in der Excel-Datei festgelegt, nicht nur in Ihrem Programm. Dies bedeutet, dass ein Benutzer, der Änderungen an der Datei vornimmt und diese schließt (durch Klicken auf das X), keine Aufforderung zum Speichern der Datei erhält und später zu Frustration führt. Es werden auch alle anderen Eingabeaufforderungen deaktiviert, die Excel normalerweise bereitstellt.

Ich überprüfe gerne, ob die Datei existiert, bevor Sie sie speichern:

        if (File.Exists(SaveAsName))
        {
            File.Delete(SaveAsName); 
        }
0
user5581710