Excel Interop,清除自上次保存以来所做的更改

时间:2014-10-13 19:18:27

标签: c# excel excel-vba excel-interop vba

我有一张Excel表格。我迭代给定次数(超过一千次)用值替换某些单元格,然后使用Excel计算几个公式。我使用Range.Value2Range.Formula数组操纵excel。 在每次迭代之后,我想通过清除自上次保存以来所做的更改,将Excel恢复到其原始状态。但是我在努力找到这方面的任何内容,到目前为止我已经尝试过调用Application.Undo()但是这不起作用。

有人有什么建议吗?

3 个答案:

答案 0 :(得分:0)

using excel = Microsoft.Office.Interop.Excel;
using System.IO

您可以在更改工作表之前尝试保存副本,然后在完成后从保存的副本加载。

Workbook wb = excel.Workbooks.Open(path);
wb.SaveAs(CopyPath); 
File.Move(CopyPath, path);

答案 1 :(得分:0)

。在代码自动化后调用时,.Undo()方法完全没用 它仅用于处理用户操作。

如上所述,请遵循......的模式 1.保存当前状态 - 到单独的工作簿文件 2.将当前状态修改为新状态 3.使用步骤1中的原始文件恢复文件。

您可以为此过程添加一些按钮到功能区。

答案 2 :(得分:0)

请使用以下代码:

Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;


    xlApp = new Excel.ApplicationClass();
    xlWorkBook = xlApp.Workbooks.Add("Yourworkbook");

    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

    ....do your stuff

    xlWorkBook.Close(false, misValue, misValue);

    xlApp.Quit();