Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Excel Interop-C保存/覆盖现有Excel文件#_C#_Excel_Excel Interop - Fatal编程技术网

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

C# 如何使用Excel Interop-C保存/覆盖现有Excel文件#,c#,excel,excel-interop,C#,Excel,Excel Interop,是否有一种方法可以通过excel互操作(在本例中,我向其中添加了一个工作表)将更改保存到excel电子表格中,而无需在用户希望用更改覆盖现有文件时提示用户。我甚至不希望用户看到电子表格在我的应用程序中打开,因此弹出一个消息框询问他们是否要覆盖该文件似乎非常不合适,并且可能会让用户感到困惑 我正在使用工作簿.SaveAs(fileloaction)方法 这里是我为excel互操作初始化COM引用对象的地方 private Excel.Application app = null; priv

是否有一种方法可以通过excel互操作(在本例中,我向其中添加了一个工作表)将更改保存到excel电子表格中,而无需在用户希望用更改覆盖现有文件时提示用户。我甚至不希望用户看到电子表格在我的应用程序中打开,因此弹出一个消息框询问他们是否要覆盖该文件似乎非常不合适,并且可能会让用户感到困惑

我正在使用工作簿.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); 
        }

太棒了,谢谢,成功了!如果现在我能找到一种方法来关闭它,就像你在上面所做的那样,而不会导致我的c#application抛出一个未经处理的异常并崩溃就好了。保存并关闭excel文件后,我也无法关闭应用程序。它需要保持开放。你可以发布一些代码(或者发布一个新的问题,如果它不适合这个问题的代码)。。。这似乎很奇怪,而且,我相信,很容易修复…我已经用一些代码更新了帖子。如果你需要更多,请告诉我。我已经发布了关于这个问题的多个线程,尝试了几种解决方案,但还没有能够关闭/保存excel工作簿,而不会引发未处理的异常并使c#应用程序崩溃。此外,未处理的异常表示“调用的对象已与其客户端断开连接”。我肯定需要更多代码。。。我想知道的第一件事是它是否与startForm.excelFileLocation有关-您是否尝试使用仅包含文件位置的字符串来更改它我想知道这是否与线程问题有关。。。不管是哪种方式,更多的代码都会帮助我们前进……没有人,我尝试在这里进行更改并在不保存的情况下关闭,Excel提示保存文件,以您的方式也可以工作,但不像第一种方式那么简单。