如何使用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#