我在使用ExcelPackage时遇到了很大的问题,因为有时公式不会更新(即使我删除了值)。
我尝试使用ExcelInterop将xlsx保存为xls,认为这可以解决问题,但事实并非如此。
我发现解决问题的方法是按CTRL + ALT + F9。用户不会喜欢每次都这样做,所以,我想以编程方式进行。您知道确保所有xlsx公式更新的有效方法吗?
答案 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