У меня есть модель в excel, и я пытаюсь передать входные данные через ASP.NET в excel и возвращаю обратно результаты модели по сетке в интерфейсе. Я использую пакет EPPlus в ASP.NET, так как для него не требуется установка 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");
NPV
илиIRR
. Куда вы загружаете данные и где используетеNPV
илиIRR
? При попытке загрузить уже существующий лист Excel возвращается#VALUE
, поскольку исходная формула содержит ошибку.Epplus
не может исправить плохую формулу. Или вы ожидали, что Epplus пересчитает значения? - person Panagiotis Kanavos   schedule 19.06.2019#VALUE
хранится на этом листе Excel для начала. Epplus не будет пересчитывать формулы, если вы не попросите об этом с помощью.Workbook.Calculate()
. Даже в этом случае он может дать сбой, потому что он не пытается на 100% эмулировать механизм вычислений Excel. это не его работа - person Panagiotis Kanavos   schedule 19.06.2019myWorksheet1.Cells["f57"].Value
только для получения значения, а не двойное преобразование в строку, затем в плавающую, а затем в строку - person Panagiotis Kanavos   schedule 19.06.2019if EPPlus could copy and paste the cell as values
это ничего не значит. И значения уже там. Если ячейкаF57
содержит число,myWorksheet1.Cells["f57"].Value
вернет его в видеobject
. Вы можете разыграть его, чтобы получитьfloat
. Нет нет причин преобразовывать это в строку, затем в плавающую, а затем обратно в строку. - person Panagiotis Kanavos   schedule 19.06.2019.Value
, например, наведя на него курсор или в контрольной переменной. Вы, наверное, уже видите, что этоdouble
илиdecimal
- person Panagiotis Kanavos   schedule 19.06.2019