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

时间:2013-10-31 22:30:45

标签: excel formula epplus

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

我不打算展示我的完整代码,而是一个展示问题的简单示例。 我已经从这里复制了这个例子并稍微加了一点:EPPlus not caluculating 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重新计算公式?

是的,我试图在这里阅读所有其他相关帖子,这不是重复。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我不认为这可能是一个Excel错误,它会是如此根本,每个人都会知道它。
生成XL XML文件不计算公式。
在查看器中查看Excel文件不会计算公式。
将工作簿计算模式设置为自动并不一定意味着Excel将处于自动计算模式:
计算模式是Excel会话从打开的第一个工作簿中获取的实例设置,如果Excel在打开工作簿时处于手动模式,则无法计算。
(顺便说一句,我看不出您希望如何成功创建Excel文件而不能测试他们)