Arbetar med anpassat beräkningsmotor

Implementera anpassad beräkningsmotor

Aspose.Cells.Gridweb har en kraftfull beräkningsmotor som kan beräkna nästan alla Microsoft Excel-formler. Trots detta kan du också utöka den standardberäkningsmotorn som ger dig större kraft och flexibilitet.

Följande egenskap och klasser används vid implementering av denna funktion.

Följande kod implementerar den anpassade beräkningsmotorn. Den implementerar gränssnittet GridAbstractCalculationEngine som har en Calculate(GridCalculationData data) metod. Denna metod anropas mot alla dina formler. Inuti denna metod fångar vi MYTESTFUNC-formeln och multiplicerar med 2 för dess första parameter värde.

Programmeringsexempel

// 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";
}
}