som*_*ang 3 .net c# interop epplus
EPPLUS尽管有CreateFormulaArray()方法,但当前版本支持创建excel公式但不是excel数组公式.
使用该CreateFormulaArray()方法时,excel公式编辑器中将显示正确的公式字符串.但是,公式实际上并未在工作表上执行.
我想知道是否有人知道任何聪明的解决方法,而不必使用Microsoft.Office.Interop
我的代码是:
using (ExcelPackage pck = new ExcelPackage(newFile))
{
pck.Workbook.Worksheets.Add("Summary");
pck.Workbook.Worksheets.MoveToStart("Summary");
var summaryWS = pck.Workbook.Worksheets[1];
summaryWS.Cells["C2"].Value = 2;
summaryWS.Cells["C3"].Value = 3;
summaryWS.Cells["C4"].Value = 8;
summaryWS.Cells["A1"].CreateArrayFormula("STDEV.P($C$2:$C$4)*SQRT(8*260)");
}
Run Code Online (Sandbox Code Playgroud)
我在excel中的输出将是#NAME?
公式编辑器显示的{=STDEV.P($C$2:$C$4)*SQRT(8*260)}
似乎Excel误解了函数名称STDEV.P,它是较新版本的STDEVP.如果您查看打开后的XML输出并使用excel保存wb EPPlus生成,您将看到它表示_xludf.STDEV.P它认为它是用户定义的.
你可以做两件事之一.您可以使用旧版本的功能:
summaryWS.Cells["A1"].CreateArrayFormula("STDEVP($C$2:$C$4)*SQRT(8*260)");
Run Code Online (Sandbox Code Playgroud)
这可能不太理想,因为你总是想坚持使用最新版本.在这种情况下,强制excel识别这样的功能:
summaryWS.Cells["A1"].CreateArrayFormula("_xlfn.STDEV.P($C$2:$C$4)*SQRT(8*260)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |