Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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# SaveCopyAs方法不起作用_C#_Excel_Events_Excel Addins_Comobject - Fatal编程技术网

C# SaveCopyAs方法不起作用

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

(我的英语水平不高,所以首先请原谅我解释得不好:D)

我通过应用程序打开excel文件

我在Excel中有一个添加项,在功能区中有一个按钮用于保存(正是保存按钮所做的保存操作)按钮点击事件代码如下:

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;”用于在保存操作和保存事件之前防止不定式循环。不获取异常的最常见原因是函数实际执行了您要求它执行的操作。你就是找不到文件了。如果未指定文件的完整路径名,则会发生这种情况。