我有一个 C# 数据库程序,并使用 EPPlus 生成一个带有一张表的 Excel 文件 (*.xlsx)。问题是至少某个版本的 Excel 在打开文档时不会重新计算公式。我正在为其他人开发该应用程序,下周可以告诉您显示问题的确切版本的 Excel。
我不打算展示我的完整代码,而是展示一个简单的例子来演示这个问题。我已经从这里复制了这个例子,并且稍微熟练了一点:EPPlus not calculating formula output after binding
这是代码:
using (var pck = new OfficeOpenXml.ExcelPackage())
{
var ws = pck.Workbook.Worksheets.Add("MySheet");
ws.Cells["A3"].Value = 2.3;
ws.Cells["A4"].Value = 10.2;
ws.Cells["A5"].Formula = "=SUM(A3:A4)";
ws.Cells["A5"].Style.Numberformat.Format = "#,##0.00";
ws.Workbook.CalcMode = ExcelCalcMode.Automatic;
pck.SaveAs(new FileInfo(@"c:\users\richard\tmp1.xlsx"));
}
该文档在 LibreOffice 中可以正常打开。它也在(未知的)Excel 版本中打开,但打开时不会重新计算公式。
我不愿意购买 MS Office 的许可证,所以我先下载了一个 Excel 查看器。ExcelViewer.exe,文件版本 12.0.4518.1071。此查看器显示相同的行为:未计算公式。
所以,我很不情愿地购买了 Office 365 家庭高级版,猜猜看:这个版本的 Excel 确实重新计算了公式。
我认为这是 Excel 版本中的错误,而不是 EPPlus 或我的代码中的错误。但是是否有任何解决方法可以强制所有版本的 Excel 重新计算公式?
是的,我已经尝试在这里阅读所有其他相关帖子,这不是重复的。
非常感谢。