epplus Excel Duration формула не работает в C# - PullRequest
2 голосов
/ 30 января 2020

Я написал следующий код для длительности cal 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

1 Ответ

1 голос
/ 30 января 2020

Как указано в комментариях, текущая версия 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;
...