我在使用ExcelPackage时遇到了大问题,因为有时公式没有更新(即使我删除了值)。我尝试使用ExcelInterop将xlsx保存为xls,以为这可以解决问题,但并没有。我发现的解决方法是按下CTRL + ALT + F9。用户不想每次都这样做,所以我想通过编程方式实现。你知道确保所有xlsx公式更新的有效方法吗?
我之前发现这个方法对我有用:
for (int iWorksheet = 1; iWorksheet <= workbook.Worksheets.Count; iWorksheet++)
{
Worksheet ws = ((Worksheet)workbook.Worksheets[iWorksheet]);
ws.UsedRange.Formula = ws.UsedRange.Formula;
ws.Calculate();
}
从 VBA 宏(或通过 COM 对象)调用 Application.CalculateFull
Application.Calculate()
来计算所有打开的工作簿,使用Workbook.Calculate()
来计算一个工作簿,或者使用Worksheet.Calculate()
来计算一个工作表。
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.calculate.aspx
SpreadsheetGear for .NET可以在没有Excel的情况下打开、计算和保存xls和xlsx工作簿,并且由于它完全是.NET代码(用C#编写),因此在.NET应用程序中使用起来更加容易。
如果您想尝试一下,可以在这里看到一些示例here并下载免费试用版here。
免责声明:我拥有SpreadsheetGear LLC。
您可以始终设置Application.Calculation = xlAutomatic
。这样,您不需要依赖自己的代码来执行计算,并且仅在需要时调用。
请注意,此设置会影响整个 Excel 实例。因此,如果您的客户不希望其他工作簿像这样工作-他们应该在单独的 Excel 实例中打开它。
Calculate()
。 - Aaron Thoma