C# SaveCopyAs方法不起作用
(我的英语水平不高,所以首先请原谅我解释得不好:D) 我通过应用程序打开excel文件 我在Excel中有一个添加项,在功能区中有一个按钮用于保存(正是保存按钮所做的保存操作)按钮点击事件代码如下:C# SaveCopyAs方法不起作用,c#,excel,events,excel-addins,comobject,C#,Excel,Events,Excel Addins,Comobject,(我的英语水平不高,所以首先请原谅我解释得不好:D) 我通过应用程序打开excel文件 我在Excel中有一个添加项,在功能区中有一个按钮用于保存(正是保存按钮所做的保存操作)按钮点击事件代码如下: Globals.ThisAddIn.Application.ActiveWorkbook.Save(); 在我的应用程序中我将一个方法(称为WorkbookBeforeSave)分配给工作簿的“BeforeSave”事件处理程序,该事件处理程序在自定义目录中手动保存工作簿 private void
Globals.ThisAddIn.Application.ActiveWorkbook.Save();
在我的应用程序中我将一个方法(称为WorkbookBeforeSave)分配给工作簿的“BeforeSave”事件处理程序,该事件处理程序在自定义目录中手动保存工作簿
private void WorkbookBeforeSave(bool saveasui, ref bool cancel)
{
_excelApp.EnableEvents = false;//_excelApp is my Excel Application
if (!_excelWorkbook.Saved)//_excelWorkbook is Active Excel Workbook
{
_excelWorkbook.SaveCopyAs(_savedFilePath);//_savedFilePath is my custom directory
_excelWorkbook.Saved = true;
}
cancel = true;
_excelApp.EnableEvents = true;
}
问题是当我单击原始Excel保存按钮“SaveCopyAs”方法正常工作,但当单击我的自定义保存按钮“SaveCopyAs”方法不工作时。
(没有引发异常,所有代码都已编译和调试)尝试使用
Try catch进行调试,这应该对您有所帮助
// using interop, excel tool, interop-excel, core
public void MyBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
{
//Globals.ThisAddIn.Application.ActiveWorkbook.SaveCopyAs(filename2); // if u use an external class to save (for threading or something else )
this.Application.ActiveWorkbook.SaveCopyAs(filename);
}
在加载和保存方法时,如果没有对office 2007 excel执行线程/任务,有时会比正常情况下滞后或较慢
简单的saveAs()
方法有很多参数(searh for it,您也可以在msdn上看到它&这里)并且它需要在路径上进行一些修改,因为最新的保存路径更改为C#used保存路径
我更喜欢SaveCopyAs
解决方案,因为它只有一个参数,而且快速、快速:D不要使用excel互操作。非常糟糕。\u excelApp.EnableEvents=false代码>看起来可疑。我同意你的看法,excel interop非常差。但我必须使用。其他可用选项是什么?”\u excelApp.EnableEvents=false;”用于在保存操作和保存事件之前防止不定式循环。不获取异常的最常见原因是函数实际执行了您要求它执行的操作。你就是找不到文件了。如果未指定文件的完整路径名,则会发生这种情况。