Trabajar con motor de cálculo personalizado

Implementar Motor de Cálculo Personalizado

Aspose.Cells.Gridweb tiene un potente motor de cálculo que puede calcular casi todas las fórmulas de Microsoft Excel. A pesar de esto, también le permite extender el motor de cálculo predeterminado que le proporciona mayor potencia y flexibilidad.

Se utilizan las siguientes propiedades y clases para implementar esta funcionalidad.

El siguiente código implementa el Motor de Cálculo Personalizado. Implementa la interfaz GridAbstractCalculationEngine que tiene un método Calculate(GridCalculationData data). Este método se llama contra todas tus fórmulas. Dentro de este método, capturamos la fórmula MYTESTFUNC y la multiplicamos por 2 para su primer valor de parámetro.

Ejemplo de Programación

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
private class CustomEngineSimple : GridAbstractCalculationEngine
{
public override void Calculate(GridCalculationData data)
{
if (!"MYTESTFUNC".Equals(data.FunctionName.ToUpper()))
{
return;
}
data.CalculatedValue = (decimal)(2.0 * (double)data.GetParamValue(0));
}
}
protected void Page_Load(object sender, EventArgs e)
{
// If first visit this page clear GridWeb1 and load data
if (!IsPostBack && !GridWeb1.IsPostBack)
{
CustomEngineSimple ce = new CustomEngineSimple();
GridWeb1.CustomCalculationEngine = ce;
GridWorksheet sheet = GridWeb1.ActiveSheet;
GridCell cell = sheet.Cells["A1"];
cell.Formula = "=MYTESTFUNC(3.0)";
cell = sheet.Cells["A2"];
cell.PutValue("hello");
cell = sheet.Cells["B1"];
cell.PutValue(1);
cell = sheet.Cells["B2"];
cell.PutValue(2);
cell = sheet.Cells["B3"];
cell.PutValue(3);
cell = sheet.Cells["A3"];
cell.Formula = "=SUM(B1:B3)";
GridWeb1.CalculateFormula();
sheet.ActiveCell = "A4";
}
}