【问题标题】:invoke formula in excel via epplus通过 epplus 在 excel 中调用公式
【发布时间】:2014-01-17 15:09:07
【问题描述】:

我在 ASP.NET MVC4 C# 项目中有一个 excel 表,我可以使用 EPPlus 成功地从 excel 表中读取。现在,我希望能够将 2 个数字传入单元格 C:2 和 C:3,并能够调用 C:4 中的公式 =SUM(C2:C3)。

所以我想从 C# 中传入 4 和 6 并调用公式并能够从 C:4 返回结果,即 40(10 和 30 的总和)。我如何在 C# 中实现这一点。

在下面的代码中,我得到 d.Average 的零

d.Average = Convert.ToDouble(currentWorksheet.Cells["C4"].Value);

到目前为止,这是我在 c# 中遍历一行的以下代码。

        using (var package = new ExcelPackage(existingFile))
        {
            ExcelWorkbook workBook = package.Workbook;
            var currentWorksheet = workBook.Worksheets.First();
            currentWorksheet.Workbook.CalcMode = ExcelCalcMode.Automatic;
            currentWorksheet.Cells["C4"].Formula = "=SUM(C2:C3)";
            currentWorksheet.Cells["C2"].Value = 10;
            currentWorksheet.Cells["C3"].Value = 30;
            package.Save();


        }

        using (var package = new ExcelPackage(existingFile))
        {
            ExcelWorkbook workBook = package.Workbook;
            var currentWorksheet = workBook.Worksheets.First();
            d.Average = Convert.ToDouble(currentWorksheet.Cells["C4"].Value);
        }

【问题讨论】:

  • 什么是 d.FinalResult?您面临的问题是什么?

标签: c# excel asp.net-mvc-4 epplus


【解决方案1】:

跳过公式字符串中的=

替换currentWorksheet.Cells["C4"].Formula = "=SUM(C2:C3)";

currentWorksheet.Cells["C4"].Formula = "SUM(C2:C3)";

【讨论】:

    【解决方案2】:

    从 EpPlus 4.0.1.1 开始,有一个扩展方法Calculate(this ExcelRangeBase range)。在访问Value 属性之前调用它:

    currentWorksheet.Cells["C4"].Calculate();
    

    之后currentWorksheet.Cells["C4"].Value 将返回40 的预期值。

    【讨论】:

      【解决方案3】:

      查看之前的回答,发现EPPLUS的计算引擎还在开发中。

      请参阅 CodePlex 上的 this discussion。 (从 2011 年开始)

      来自路线图页面的引用:

      3.2 版

      公式解析器、计算引擎

      用 DotNetZip 替换 Package API

      新的 cellstore 可提高插入、删除性能和内存消耗

      上次编辑时间:2013 年 2 月 14 日

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多