Я использую Epplus в приложении .NET Core и хотел бы использовать имена именованных диапазонов в формулах.Проблема заключается в том, что когда я ссылаюсь на именованный диапазон, он принимает значение первой ячейки в диапазоне и не перебирает строки:
var data = new List<object[]>()
{
new object[] {"Hours", "Price", "Total"},
new object[] {0.5, 10, 0},
new object[] {2, 100, 0},
new object[] {3, 20, 0}
};
using (var package = new ExcelPackage())
{
var sheet = package.Workbook.Worksheets.Add("Variables");
sheet.Cells["A1"].LoadFromArrays(data);
sheet.Names.Add("Hours", sheet.Cells["A2:A4"]);
sheet.Names.Add("Price", sheet.Cells["B2:B4"]);
sheet.Names.Add("Total", sheet.Cells["C2:C4"]);
sheet.Names["Total"].Formula = "Hours * Price";
package.Workbook.Calculate();
for (int i = 1; i <= sheet.Dimension.End.Row; i++)
{
Console.WriteLine($"{sheet.Cells[i, 1].Value}\t{sheet.Cells[i, 2].Value}\t{sheet.Cells[i, 3].Value}");
}
}
Этот код записывает в консоль следующее:
Hours Price Total
0,5 10 5
2 100 5
3 20 5
Но на самом деле я хотел бы получить это:
Hours Price Total
0,5 10 5
2 100 200
3 20 60
Можно ли как-то сделать это, используя имена в качестве аргументов вместо адресов ячеек, например, "Часы * Цена"?