【问题标题】:EPPlus formula: recalculated in LibreOffice, but NOT in SOME version of ExcelEPPlus 公式:在 LibreOffice 中重新计算,但在某些版本的 Excel 中没有
【发布时间】:2013-10-31 22:30:45
【问题描述】:

我有一个 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 重新计算公式?

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

非常感谢。

【问题讨论】:

  • @Charles Williams:感谢您的回复。不幸的是,您的回复告诉我,您认为 Execel 不是原因,并且设置计算模式还不够,但它没有提供解决方案或建议我应该做些什么。请告诉我上面代码中的错误???我只有一个工作簿,上面的代码为那个工作簿设置了标志。
  • 更新:不重新计算公式的版本是 Excel 2010。免费的 Excel 查看器也有这种行为。
  • 然后我已经阅读了很多关于 SO 的 cmets 并且设置计算模式似乎是要走的路。 XlsxWriter 还将公式的所有结果设置为零,然后设置“一个标志”(我希望这是计算模式)以强制重新计算。这适用于 LibreOffice 和 Excel 2013,但不适用于 Excel 2010。无论如何,我们决定要么在报告中写入计算值(ugh!)要么使用 LibreOffice,因为更新到 Excel 2013 的成本太高。谢谢大家。
  • @Charles Williams,引用:顺便说一句,我不明白您希望如何在无法测试的情况下成功创建 Excel 文件。 1) 文档相当简单,我曾期望 Excel 和 LibreOffice 中的行为相同。 2)我可以用观众测试。 3)由于我是免费开发的(它是为我的兄弟),我不想付出任何代价。但我最终购买了 2013 版的许可证。我不想购买旧版本的许可证。但在 Excel 2013 中它可以正常工作。
  • 在不知道它应该设置什么 Excel 属性的情况下,我无法评论 EPPlus“标志”。正如我所说 - 在工作簿中设置计算模式仅在 Excel 会话中打开第一个工作簿时才设置 Excel 计算模式。我建议您告诉最终用户在打开生成的文件后在 Excel 中按 Ctrl/Alt/F9。或者在文件中生成一些 VBA 以在工作簿打开时触发计算。或者告诉您的用户在打开文件时确保 Excel 处于自动计算模式。

标签: excel formula epplus


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    相关资源
    最近更新 更多