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

use*_*315 20 c# excel excel-interop

有没有办法通过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;
Run Code Online (Sandbox Code Playgroud)

下面是我用来关闭/保存excel文件的代码.workbook.close()方法行是据报道抛出未处理异常的行.

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

Joh*_*tos 54

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

ExcelApp.DisplayAlerts = False
ExcelWorkbook.Close(SaveChanges:=True, Filename:=CurDir & FileToSave)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


Shi*_*ava 8

只有此代码才会要求停止覆盖警报或模板已在使用中

ExcelApp.DisplayAlerts = False