Calculer des formules
Ajout de formules et calcul des résultats
Aspose.Cells dispose d’un moteur de calcul de formule intégré. Non seulement il peut recalculer les formules importées à partir de modèles de concepteur, mais il prend également en charge le calcul des résultats des formules ajoutées au moment de l’exécution.
Aspose.Cells prend en charge la plupart des formules ou fonctions qui font partie de Microsoft Excel (Lireune liste des fonctions supportées par le moteur de calcul). Ces fonctions peuvent être utilisées via les API ou les feuilles de calcul du concepteur. Aspose.Cells prend en charge un vaste ensemble de formules mathématiques, de chaîne, booléennes, de date/heure, statistiques, de base de données, de recherche et de référence.
Utilisez leFormule propriété ouDéfinirFormule(…) les méthodes deCellclasse pour ajouter une formule à une cellule. Lorsque vous appliquez une formule, commencez toujours la chaîne par un signe égal (=) comme vous le faites lors de la création d’une formule dans Microsoft Excel et utilisez une virgule (,) pour délimiter les paramètres de la fonction.
Pour calculer les résultats des formules, l’utilisateur peut appeler leCalculerFormule méthode de laCahierclasse qui traite toutes les formules incorporées dans un fichier Excel. Ou, l’utilisateur peut appeler leCalculerFormule méthode de laFeuille de travail classe qui traite toutes les formules incorporées dans une feuille. Ou, l’utilisateur peut également appeler leCalculer méthode de laCellclasse qui traite la formule d’un Cell :
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(CalculatingFormulas.class) + "formulas/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Adding a new worksheet to the Excel object | |
int sheetIndex = workbook.getWorksheets().add(); | |
// Obtaining the reference of the newly added worksheet by passing its sheet index | |
Worksheet worksheet = workbook.getWorksheets().get(sheetIndex); | |
// Adding a value to "A1" cell | |
worksheet.getCells().get("A1").putValue(1); | |
// Adding a value to "A2" cell | |
worksheet.getCells().get("A2").putValue(2); | |
// Adding a value to "A3" cell | |
worksheet.getCells().get("A3").putValue(3); | |
// Adding a SUM formula to "A4" cell | |
worksheet.getCells().get("A4").setFormula("=SUM(A1:A3)"); | |
// Calculating the results of formulas | |
workbook.calculateFormula(); | |
// Get the calculated value of the cell | |
String value = worksheet.getCells().get("A4").getStringValue(); | |
// Saving the Excel file | |
workbook.save(dataDir + "CalculatingFormulas_out.xls"); |
Important à savoir
Calcul direct de la formule
Aspose.Cells dispose d’un moteur de calcul de formule intégré. En plus de calculer des formules importées à partir d’un fichier de concepteur, Aspose.Cells peut calculer directement les résultats des formules.
Parfois, vous devez calculer directement les résultats de la formule sans les ajouter 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 d’une formule Excel Microsoft sans ajouter la formule dans une feuille de calcul.
Vous pouvez utiliser les API du moteur de calcul de formule Aspose.Cells pourFeuille de travail àcalculer les résultats de ces formules sans les ajouter à la feuille de calcul :
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(DirectCalculationFormula.class) + "formulas/"; | |
// Create a workbook | |
Workbook workbook = new Workbook(); | |
// Access first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Put 20 in cell A1 | |
Cell cellA1 = worksheet.getCells().get("A1"); | |
cellA1.putValue(20); | |
// Put 30 in cell A2 | |
Cell cellA2 = worksheet.getCells().get("A2"); | |
cellA2.putValue(30); | |
// Calculate the Sum of A1 and A2 | |
Object results = worksheet.calculateFormula("=Sum(A1:A2)"); | |
// Print the output | |
System.out.println("Value of A1: " + cellA1.getStringValue()); | |
System.out.println("Value of A2: " + cellA2.getStringValue()); | |
System.out.println("Result of Sum(A1:A2): " + results.toString()); |
Le code ci-dessus produit la sortie suivante :
Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0
Calculer des formules à plusieurs reprises
Lorsqu’il y a beaucoup de formules dans le classeur et que l’utilisateur doit les calculer à plusieurs reprises en n’en modifiant qu’une petite partie, il peut être utile pour les performances d’activer la chaîne de calcul des formules :FormulaSettings.EnableCalculationChain.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(CalculatingFormulasOnce.class) + "formulas/"; | |
// Load the template workbook | |
Workbook workbook = new Workbook(dataDir + "book1.xls"); | |
// Print the time before formula calculation | |
System.out.println(DateTime.getNow()); | |
// Set the CreateCalcChain as true | |
workbook.getSettings().getFormulaSettings().setEnableCalculationChain(true); | |
// Calculate the workbook formulas | |
workbook.calculateFormula(); | |
Cells cells = workbook.getWorksheets().get("Sheet1").getCells(); | |
//with original values, the calculated result | |
System.out.println(cells.get("A11").getValue()); | |
//update one value the formula depends on | |
cells.get("A5").putValue(15); | |
// Calculate the workbook formulas again, in fact only A11 needs to be and will be calculated | |
workbook.calculateFormula(); | |
//check the re-calculated value | |
System.out.println(cells.get("A11").getValue()); | |
// Print the time after formula calculation | |
System.out.println(DateTime.getNow()); |
Important à savoir
Sujets avancés
- Ajouter Cells à Microsoft Fenêtre de surveillance des formules Excel
- Aspose.Cells Moteur de calcul de formule
- Calcul de la fonction IFNA à l’aide de Aspose.Cells
- Calcul de la formule matricielle des tableaux de données
- Calcul des fonctions Excel 2016 MINIFS et MAXIFS
- Diminuez le temps de calcul de la méthode Cell.Calculate
- Détection de référence circulaire
- Calcul direct de la fonction personnalisée sans l’écrire dans une feuille de calcul
- Implémenter un moteur de calcul personnalisé pour étendre le moteur de calcul par défaut de Aspose.Cells
- Interrompre ou annuler le calcul de la formule du classeur
- Retour d’une plage de valeurs à l’aide de AbstractCalculationEngine
- Renvoyer une plage de valeurs à l’aide de ICustomFunction
- Utilisation de la fonctionnalité ICustomFunction