EPPlus - 无法从 excel 获取 NPV 和 IRR 函数的值



我在 excel 中有一个模型,并尝试通过 ASP.NET 将输入输入到 excel,并通过前端的网格返回模型结果。我在 ASP.NET 中使用EPPlus软件包,因为它不需要安装MS Office。

我无法获取使用了 NPV [净现值] 和 IRR [内部收益率] 函数的单元格的值。它总是返回#VALUE#NAME。作为一种解决方法,我能够手动计算 NPV,但我在 IRR 方面遇到了困难。

EPPlus 中有没有办法将所有单元格粘贴为工作表中的值? 还是有其他选择?

请提前帮助和感谢

更新:我有EPPlus 4.5.3.1和Visual Studio 2013。

string strfilepath = Server.MapPath(destPath);
FileInfo fileInfo = new FileInfo(strfilepath);
ExcelPackage p = new ExcelPackage(fileInfo);
ExcelWorksheet myWorksheet = p.Workbook.Worksheets["Financial"];
GridView1.Rows[0].Cells[2].Text = float.Parse(myWorksheet1.Cells["f57"].Value.ToString()).ToString("N2");

我已经在 EPPlus 中尝试了所有可能的方法,但我无法计算 IRR。我想出了一个SQL解决方案,它给出的结果接近excel的IRR函数。

CREATE FUNCTION [dbo].[Ufn_irr1] (@strIDs1 VARCHAR(10), 
@strIDs2 VARCHAR(10), 
@guess   DECIMAL(30, 10)) 
returns DECIMAL(30, 10) 
AS 
BEGIN 
DECLARE @t_IDs TABLE 
( a
id    INT IDENTITY(0, 1), 
value DECIMAL(30, 10) 
) 
DECLARE @strIDs VARCHAR(max) 
SET @strIDs = @strIDs1 + ',' + @strIDs2 
DECLARE @strID  VARCHAR(12), 
@sepPos INT, 
@NPV    DECIMAL(30, 10) 
SET @strIDs = COALESCE(@strIDs + ',', '') 
SET @sepPos = Charindex(',', @strIDs) 
WHILE @sepPos > 0 
BEGIN 
SET @strID = LEFT(@strIDs, @sepPos - 1) 
INSERT INTO @t_IDs 
(value) 
SELECT ( Cast(@strID AS DECIMAL(20, 10)) ) 
WHERE  Isnumeric(@strID) = 1 
SET @strIDs = RIGHT(@strIDs, Datalength(@strIDs) - @sepPos) 
SET @sepPos = Charindex(',', @strIDs) 
END 
SET @guess = CASE 
WHEN Isnull(@guess, 0) <= 0 THEN 0.00001 
ELSE @guess 
END 
SELECT @NPV = Sum(value / Power(1 + @guess, id)) 
FROM   @t_IDs 
WHILE @NPV > 0 
BEGIN 
SET @guess = @guess + 0.00001 
SELECT @NPV = Sum(value / Power(1 + @guess, id)) 
FROM   @t_IDs 
END 
RETURN @guess 
END 

相关内容

  • 没有找到相关文章

最新更新