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 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;
我在 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 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;