Расчет пользовательских функций в GridWeb

Возможные сценарии использования

Aspose.Cells.GridWeb поддерживает расчет пользовательских функций с помощью свойства GridWeb.CustomCalculationEngine. Это свойство принимает экземпляр интерфейса GridAbstractCalculationEngine. Пожалуйста, реализуйте интерфейс GridAbstractCalculationEngine и вычисляйте свои пользовательские функции с помощью собственной логики.

Расчет пользовательских функций в GridWeb

Следующий пример кода добавляет пользовательскую функцию с именем MYTESTFUNC() в ячейку B3. Затем мы вычисляем значение этой функции, реализуя интерфейс GridAbstractCalculationEngine. Мы вычисляем MYTESTFUNC() таким образом, что он умножает свой параметр на 2 и возвращает результат. Поэтому, если его параметр равен 9, он вернет 2 * 9 = 18.

Образец кода

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
private class GridWebCustomCalculationEngine : GridAbstractCalculationEngine
{
public override void Calculate(GridCalculationData data)
{
// Calculate MYTESTFUNC() with your own logic. i.e Multiply MYTESTFUNC() parameter with 2 so MYTESTFUNC(3.0) = 6
if ("MYTESTFUNC".Equals(data.FunctionName.ToUpper()))
{
data.CalculatedValue = (decimal)(2.0 * (double)data.GetParamValue(0));
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false && GridWeb1.IsPostBack == false)
{
// Assign your own custom calculation engine to GridWeb
GridWeb1.CustomCalculationEngine = new GridWebCustomCalculationEngine();
// Access the active worksheet and add your custom function in cell B3
GridWorksheet sheet = GridWeb1.ActiveSheet;
GridCell cell = sheet.Cells["B3"];
cell.Formula = "=MYTESTFUNC(9.0)";
// Calculate the GridWeb formula
GridWeb1.CalculateFormula();
}
}