如何自动刷新Excel公式?

我遇到了使用ExcelPackage的大问题,因为有时公式不会更新(即使我删除了这个值)。

我试过使用ExcelInterop xlsx保存为xls,认为这可以解决问题,但它没有。

我发现解决它的方法是按CTRL + ALT + F9。 用户不会喜欢每次都这样做,所以我想以编程的方式来完成。 你知道任何有效的方法来确保所有xlsx公式被更新吗?

从VBAmacros(或通过COM对象)调用Application.CalculateFull

之前我已经发现了这个function:

for (int iWorksheet = 1; iWorksheet <= workbook.Worksheets.Count; iWorksheet++) { Worksheet ws = ((Worksheet)workbook.Worksheets[iWorksheet]); ws.UsedRange.Formula = ws.UsedRange.Formula; ws.Calculate(); } 

用于.NET的SpreadsheetGear可以打开,计算和保存xls和xlsx工作簿,而不使用Excel,并且从.NET应用程序中工作起来更容易,因为它完全是.NET代码(用C#编写)。

你可以在这里看到一些例子,并在这里下载免费试用,如果你想尝试一下。

免责声明:我自己的SpreadsheetGear LLC

你可以随时设置Application.Calculation = xlAutomatic 。 这样你就不依赖自己的代码来执行计算,只有在需要时才会调用它。

请注意,此设置会影响整个Excel实例。 所以,如果你的客户不希望其他工作簿这样工作 – 他们应该打开它在一个单独的Excel实例。

在C#中,使用Application.Calculate()来评估所有打开的工作簿, Workbook.Calculate()以评估工作簿或Worksheet.Calculate()工作表。

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.calculate.aspx