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

有没有办法通过excel互操作保存对excel电子表格的修改(在这种情况下,我正在向其中添加工作表),而不会提示用户是否想要使用更改覆盖现有文件。 我不希望用户甚至在我的应用程序中看到电子表格打开,因此弹出一个消息框询问他们是否要覆盖文件,这看起来很不合适,可能会让用户感到困惑。

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

这里是我为excel interop初始化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); 
        }
链接地址: http://www.djcxy.com/p/35693.html

上一篇: How to Save/Overwrite existing Excel file with Excel Interop

下一篇: Rename a file in C#