EPPlus公式:在LibreOffice中重新计算,但不在某些版本的Excel中

我有一个C#数据库程序,并使用EPPlus生成一个Excel文件(* .xlsx)。 问题是至less某些版本的Excel不会在打开文档时重新计算公式。 我正在为其他人开发应用程序,并可以在下周告诉你确切的Excel版本,显示问题。

我不打算展示我的完整代码,只是一个简单的例子来说明问题。 我从这里复制了这个例子,并且使用了一下: EPPlus在绑定后没有计算出公式输出

这里是代码:

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重新计算公式的?

是的,我试图阅读所有其他相关的post,这不是重复的。

非常感谢。

我不认为这可能是一个Excel错误,它是如此重要,每个人都会知道。
生成XL XML文件不计算公式。
在查看器中查看Excel文件不计算公式。
将工作簿计算模式设置为“自动”并不一定意味着Excel将处于“自动计算”模式:
计算模式是从打开的第一个工作簿获取的Excel会话实例设置,因此如果Excel处于手动模式,则打开工作簿时它将不计算。
(顺便说一句,我没有看到你如何能够成功地创buildExcel文件,而无法testing它们)