Lavorare con un motore di calcolo personalizzato
Implementare un Motore di Calcolo Personalizzato
Aspose.Cells.Gridweb dispone di un potente motore di calcolo che può calcolare quasi tutte le formule di Microsoft Excel. Tuttavia, consente anche di estendere il motore di calcolo predefinito che fornisce maggiore potenza e flessibilità.
Le seguenti proprietà e classi vengono utilizzate nell’implementazione di questa funzionalità.
Il seguente codice implementa il motore di calcolo personalizzato. Implementa l’interfaccia GridAbstractCalculationEngine che ha un metodo Calculate(GridCalculationData data). Questo metodo viene chiamato per tutte le formule. All’interno di questo metodo, catturiamo la formula MYTESTFUNC e moltiplichiamo per 2 il valore del suo primo parametro.
Esempio di programmazione
// 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"; | |
} | |
} | |