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