如何自动刷新excel公式?

时间:2009-07-29 13:19:58

标签: c# .net excel

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

我尝试使用ExcelInterop将xlsx保存为xls,认为这可以解决问题,但事实并非如此。

我发现解决问题的方法是按CTRL + ALT + F9。用户不会喜欢每次都这样做,所以,我想以编程方式进行。您知道确保所有xlsx公式更新的有效方法吗?

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:8)

我之前发现这对我有用:

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

答案 2 :(得分:1)

SpreadsheetGear for .NET可以在没有Excel的情况下打开,计算和保存xls和xlsx工作簿,并且更容易使用.NET应用程序,因为它完全是.NET代码(用C#编写)。

如果您想尝试一下,可以查看一些示例here并下载免费试用here

免责声明:我拥有SpreadsheetGear LLC

答案 3 :(得分:1)

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

请注意,此设置会影响整个Excel实例。因此,如果您的客户端不希望其他工作簿像这样工作 - 他们应该在单独的Excel实例中打开它。

答案 4 :(得分:1)

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

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