Travailler avec un moteur de calcul personnalisé
Implémenter un moteur de calcul personnalisé
Aspose.Cells.Gridweb dispose d’un moteur de calcul puissant qui peut calculer presque toutes les formules de Microsoft Excel. Malgré cela, il vous permet également d’étendre le moteur de calcul par défaut, ce qui vous offre plus de puissance et de flexibilité.
La propriété et les classes suivantes sont utilisées pour implémenter cette fonctionnalité.
Le code suivant met en œuvre le moteur de calcul personnalisé. Il implémente l’interface GridAbstractCalculationEngine qui a une méthode Calculate(GridCalculationData data). Cette méthode est appelée pour toutes vos formules. À l’intérieur de cette méthode, nous capturons la formule MYTESTFUNC et multiplions par 2 pour sa première valeur de paramètre.
Exemple de programmation
// 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"; | |
} | |
} | |