epplus Excel 持续时间公式在 C# 中不起作用

epplus Excel Duration formula not working in C#

我在 C#

中为持续时间计算编写了以下代码
ExcelPackage excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Sheet1");
workSheet.View.RightToLeft = true;

var formula="MDURATION(43860.3507195718,44233,0.2,0.199014876362008,2,3)";

workSheet.Cells["Z8"].Formula = formula;
workSheet.Cells["Z8"].Calculate();
var result= (workSheet.Cells["Z8"].Value);

此公式适用于 Excel 但不适用于此代码 最后结果变量的值变为{#NAME?}。 但它在 Excel 中的值是 .803

根据评论中的建议,当前版本的 epplus 不支持 MDURATION 功能。

但是,您可以使用另一个 NuGet PackageExcelFinancialFunctions,如下所示:

using Excel.FinancialFunctions;

//...

//var formula = "MDURATION(43860.3507195718,44233,0.2,0.199014876362008,2,3)";

DateTime start = new DateTime(1900, 01, 01);
double modifiedDuration = Financial.MDuration(
    start.AddDays(43860.3507195718), 
    start.AddDays(44233), 
    0.2, 
    0.199014876362008,
    (Frequency)2, 
    (DayCountBasis)3);

workSheet.Cells["Z8"].Value = modifiedDuration;