簡體   English   中英

如何使用Excel Interop保存/覆蓋現有的Excel文件 - C#

[英]How to Save/Overwrite existing Excel file with Excel Interop - C#

有沒有辦法通過excel互操作保存對excel電子表格的更改(在這種情況下,我正在向其添加工作表),而不會提示用戶是否要用更改覆蓋現有文件。 我不希望用戶甚至在我的應用程序中看到電子表格打開,因此彈出一個消息框詢問他們是否要覆蓋該文件似乎非常不合適並且可能使用戶感到困惑。

我正在使用workbook.SaveAs(fileloaction)方法。

這是我初始化excel互操作的COM引用對象的地方。

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;

下面是我用來關閉/保存excel文件的代碼。 workbook.close()方法行是據報道拋出未處理異常的行。

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

基本上,你需要的只是ExcelApp.DisplayAlerts = False - 這是我如何做到的,但是:

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

希望這可以幫助

只有此代碼才會要求停止覆蓋警報或模板已在使用中

ExcelApp.DisplayAlerts = False

我知道這是一個老帖子,但我想分享一種方法來完成這項工作,而不會在未來造成可能的挫折。

首先我不喜歡使用:ExcelApp.DisplayAlerts = False

設置此標志將在excel文件上設置此屬性,而不僅僅是在程序中。 這意味着如果用戶對文件進行了更改並將其關閉(通過單擊X),則不會提示他們保存文件,以后會引起挫敗感。 它還將禁用excel通常發布的任何其他提示。

我喜歡在保存之前檢查文件是否存在:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM