【发布时间】:2019-06-17 11:20:01
【问题描述】:
我在 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?发布一些代码,以便其他人可以尝试。
-
您还没有发布创建 Excell 工作表的代码,更不用说使用
NPV或IRR的公式了。您在哪里加载数据以及在哪里使用NPV或IRR?如果您尝试加载已经存在的 Excel 工作表,则会返回#VALUE,因为 original 公式包含错误。Epplus无法修复错误的公式。或者您是否期望 Epplus 会重新计算这些值? -
您好@PanagiotisKanavos,感谢您的回复。它是一个已经存在的 Excel,工作表使用 IRR() 内置函数从不同工作表中的单元格计算 IRR。我可以在 excel 中看到计算出的值,这不是一个糟糕的公式。只有当我尝试将结果从 excel 获取到网格时,我才会得到结果 #VALUE。
-
@Chendur 这意味着
#VALUE一开始就存储在该 Excel 工作表中。 Epplus 不会重新计算公式,除非您使用.Workbook.Calculate()要求它。即使那样,它也可能会失败,因为它没有尝试 100% 模拟 Excel 计算引擎。那不是它的工作 -
我有行 {p.Workbook.Calculate();} 以便计算整个工作簿中的每个公式。我错过了什么吗?
标签: asp.net .net excel epplus epplus-4