Arbeiten mit benutzerdefinierter Berechnungsmaschine

Benutzerdefinierten Berechnungsmotor implementieren

Aspose.Cells.Gridweb verfügt über eine leistungsstarke Berechnungsmaschine, die fast alle Microsoft Excel-Formeln berechnen kann. Dennoch ermöglicht es Ihnen auch, die Standardberechnungsmaschine zu erweitern, was Ihnen eine größere Leistung und Flexibilität bietet.

Die folgenden Eigenschaften und Klassen werden zur Umsetzung dieses Merkmals verwendet.

Der folgende Code implementiert den benutzerdefinierten Berechnungsmotor. Es implementiert das Interface GridAbstractCalculationEngine, das eine Calculate(GridCalculationData data)-Methode hat. Diese Methode wird für alle Ihre Formeln aufgerufen. Innerhalb dieser Methode erfassen wir die MYTESTFUNC-Formel und multiplizieren mit 2 für ihren ersten Parametewert.

Programmierbeispiel

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