C# Excel互操作,清除自上次保存以来所做的更改
我有一张我使用的Excel表格。我迭代给定次数(超过1000次),用值替换某些单元格,然后使用Excel计算两个公式。我使用C# Excel互操作,清除自上次保存以来所做的更改,c#,excel,excel-interop,vba,C#,Excel,Excel Interop,Vba,我有一张我使用的Excel表格。我迭代给定次数(超过1000次),用值替换某些单元格,然后使用Excel计算两个公式。我使用Range.Value2和Range.Formula数组操作excel。 在每次迭代之后,我希望通过清除自上次保存以来所做的更改,将Excel恢复到其原始状态。然而,我很难找到这方面的任何信息,到目前为止,我已经尝试调用Application.Undo(),但是这不起作用 有人有什么建议吗 using excel = Microsoft.Office.Interop.Exc
Range.Value2
和Range.Formula
数组操作excel。
在每次迭代之后,我希望通过清除自上次保存以来所做的更改,将Excel恢复到其原始状态。然而,我很难找到这方面的任何信息,到目前为止,我已经尝试调用Application.Undo()
,但是这不起作用
有人有什么建议吗
using excel = Microsoft.Office.Interop.Excel;
using System.IO
您可以在更改图纸之前尝试保存副本,然后在更改完成后从保存的副本加载
Workbook wb = excel.Workbooks.Open(path);
wb.SaveAs(CopyPath);
File.Move(CopyPath, path);
.Undo()方法在代码自动化之后调用时完全无用。它仅用于处理用户操作 如上所述,请遵循…
1.将当前状态保存到单独的工作簿文件。
2.将当前状态修改为新状态。
3.使用步骤1中的原始文件还原回文件
您可以为此过程向功能区添加一些按钮。请使用以下代码:
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();
这是一个选项,但是,由于我正在进行迭代分配,因此每次迭代后执行该操作都会非常缓慢。不过,谢谢。@Tohmas这实际上取决于文件的大小和运行的时间。对我来说,听起来你应该只使用一个模板。从模板中读取内容,然后进行更改,关闭模板并再次加载以进行下一次更改。