首页 > 解决方案 > epplus Excel 持续时间公式在 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

标签: c#excel-formulaepplusduration

解决方案


正如评论中所建议的,当前版本的epplus不支持该MDURATION功能。

但是,您可以使用另一个NuGet Package:ExcelFinancialFunctions如下:

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;

推荐阅读