在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日