在Excel中通过epplus调用公式

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

所以从C#我想传入4和6,并调用公式,并能够从C:4 40(SUM和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); } 

跳过公式string中的=

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

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

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

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

currentWorksheet.Cells["C4"].Value将返回期望值40

我在回顾我以前的回答,发现EPPLUS的计算引擎还在开发中。

请参阅关于CodePlex的讨论 。 (从2011年开始)

从路线图页面引用:

版本3.2

公式分析器,计算引擎

用DotNetZipreplace包API

新的cellstore插入,删除性能和内存消耗

最后编辑2013年2月14日