Calculer ou recalculer les formules dynamiquement

Le moteur de calcul de formule est intégré dans Aspose.Cells. Il peut non seulement recalculer la formule importée à partir du fichier de conception mais prend également en charge le calcul des résultats des formules ajoutées à l’exécution.

Ajout de formules et calcul de résultats

Aspose.Cells prend en charge la plupart des formules ou fonctions qui font partie de Microsoft Excel. Les développeurs peuvent utiliser ces formules à l’aide de l’API ou des feuilles de calcul du concepteur. Aspose.Excel prend en charge un vaste ensemble de formules mathématiques, de chaînes, logiques, de date/heure, statistiques, de base de données, de recherche et de référence.

Utilisez la propriété de formule de la classe Cell pour ajouter une formule à une cellule. Lors de l’application d’une formule à une cellule, commencez toujours la chaîne par un signe égal (=) comme vous le faites lors de la création d’une formule dans Microsoft Excel. Utilisez une virgule (,) pour délimiter les paramètres de la fonction.

Pour calculer les résultats des formules, appelez la méthode CalculateFormula de la classe Excel qui traite toutes les formules intégrées dans un fichier Excel. Lisez la url: liste des fonctions prises en charge par la méthode CalculateFormula.

 //Instantiating a Workbook object

Workbook workbook = new Workbook();

//Adding a new worksheet to the Excel object

int sheetIndex = workbook.Worksheets.Add();

//Obtaining the reference of the newly added worksheet by passing its sheet index

Worksheet worksheet = workbook.Worksheets[sheetIndex];

//Adding a value to "A1" cell

worksheet.Cells["A1"].PutValue(1);

//Adding a value to "A2" cell

worksheet.Cells["A2"].PutValue(2);

//Adding a value to "A3" cell

worksheet.Cells["A3"].PutValue(3);

//Adding a SUM formula to "A4" cell

worksheet.Cells["A4"].Formula = "=SUM(A1:A3)";

//Calculating the results of formulas

workbook.CalculateFormula();

//Get the calculated value of the cell

string value = worksheet.Cells["A4"].Value.ToString();

//Saving the Excel file

workbook.Save("Adding Formula.xls");

Calcul des formules une seule fois

Lorsque l’utilisateur appelle Workbook.CalculateFormula() pour calculer les valeurs des formules à l’intérieur du modèle de classeur, Aspose.Cells crée une chaîne de calcul. Cela améliore les performances lorsque les formules sont calculées pour la deuxième ou troisième fois, etc. Cependant, si le modèle utilisateur contient de nombreuses formules diverses, la première fois du calcul de la formule peut consommer beaucoup de temps de traitement CPU et de mémoire.

Aspose.Cells vous permet de désactiver la création d’une chaîne de calcul, ce qui est utile dans les scénarios où vous souhaitez calculer les formules de votre fichier une seule fois.

Si vous cherchez à améliorer les performances des calculs de formules par Aspose.Cells et que vous ne voulez pas créer de chaîne de calcul de formule, veuillez définir FormulaSettings.EnableCalculationChain sur false. Par défaut, il est défini sur true.

 string FilePath = @"..\..\..\Sample Files\";

string FileName = FilePath + "Adding Formula.xlsx";

//Load the template workbook

Workbook workbook = new Workbook(FileName);

//Print the time before formula calculation

Console.WriteLine(DateTime.Now);

//Set the CreateCalcChain as false

workbook.Settings.FormulaSettings.EnableCalculationChain = false;

//Calculate the workbook formulas

workbook.CalculateFormula();

//Print the time after formula calculation

Console.WriteLine(DateTime.Now);

workbook.Save(FileName);

Calcul direct de formule

Le moteur de calcul de formule est intégré dans Aspose.Cells. En outre, en recalculant la formule importée à partir du fichier de conception, Aspose.Cells prend également en charge le calcul des résultats des formules directement. Parfois, vous devez calculer directement les résultats des formules sans les ajouter réellement dans une feuille de calcul. Les valeurs des cellules utilisées dans la formule existent déjà dans une feuille de calcul et tout ce dont vous avez besoin est de trouver le résultat de ces valeurs en fonction de certaines formules Ms-Excel sans ajouter la formule dans une feuille de calcul.

Vous pouvez utiliser l’API de moteur de calcul de formules d’Aspose.Cells, c’est-à-dire worksheet.Calculate(string formula) pour calculer les résultats de telles formules sans les ajouter réellement dans la feuille de calcul.

 //Create a workbook

Workbook workbook = new Workbook();

//Access first worksheet

Worksheet worksheet = workbook.Worksheets[0];

//Put 20 in cell A1

Cell cellA1 = worksheet.Cells["A1"];

cellA1.PutValue(20);

//Put 30 in cell A2

Cell cellA2 = worksheet.Cells["A2"];

cellA2.PutValue(30);

//Calculate the Sum of A1 and A2

var results = worksheet.CalculateFormula("=Sum(A1:A2)");

Cell cellA3 = worksheet.Cells["A3"];

cellA3.PutValue(results);

//Print the output

Debug.WriteLine("Value of A1: " + cellA1.StringValue);

Debug.WriteLine("Value of A2: " + cellA2.StringValue);

Debug.WriteLine("Result of Sum(A1:A2): " + results.ToString());

workbook.Save("Calulate Any Formulae.xls");

Télécharger le code source d’exemple