有什么办法可以设置吗both the Value
& Formula
单元格的属性以便它们保留到写入的 XLSX 文件中?
由于EPPlus不计算公式(它依赖excel来计算),所以我为用户预先计算结果。这样,如果他们不打开文件,而是重新上传文件,则“值”不为空。公式非常简单。
Note: sheet.SetValue()
and .Value
两者都重置了 Formula 属性ExcelCell
类,所以.Value
必须先调用。请参阅源代码ExcelCell.SetRichText()
看到它发生。
以下是测试用例中几乎完全相同的代码:
var package = new ExcelPackage(); // and setup code
var sheet = package.Workbook.Worksheets.First();
sheet.Cells["A2"].Value = 10;
sheet.Cells["A2"].Formula = "=A1 * 3";
// Cell is OK now. shows both ".Value" and ".Formula"
using (var s = new MemoryStream()) {
package.Save(s);
var newPackage = new ExcelPackage(s);
var newSheet = newPackage.Workbook.Worksheets.First();
var cell = newSheet.Cells["A2"];
// cell.Value == null
// cell.Formula = "=A1 * 3"
}
从EpPlus版本4.0.1.1开始,有一个扩展方法Calculate(this ExcelRangeBase range)
。调用它:
cell.Calculate();
之后cell.Value
将返回预期结果。
UPDATE
From 官方文档 http://epplus.codeplex.com/wikipage?title=About%20Formula%20calculation:
EPPlus从版本4开始支持公式计算。这意味着
您可以让 EPPlus 计算公式的结果
作业簿。
这是通过调用Calculate() 方法来完成的,该方法可在
工作簿、工作表和范围级别。当调用Calculate()时 EPPlus
将评估公式的结果并将结果存储为
单元格的值 - 就像 Excel 一样。
Example
using(var package = new ExcelPackage(new FileInfo(@"c:\temp\tmp.xlsx")))
{
// calculate all formulas in the workbook
package.Workbook.Calculate();
// calculate one worksheet
package.Workbook.Worksheets["my sheet"].Calculate();
// calculate a range
package.Workbook.Worksheets["my sheet"].Cells["A1"].Calculate();
}
已知的问题
EPPlus 目前不支持 Excel 的以下功能
当涉及到公式计算时:数组公式、相交
运算符,对外部工作簿的引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)