Calcola formule
Aggiunta di formule e calcolo dei risultati
Aspose.Cells ha un motore di calcolo delle formule incorporato. Non solo può ricalcolare le formule importate dai modelli di designer, ma supporta anche il calcolo dei risultati delle formule aggiunte in fase di esecuzione.
Aspose.Cells supporta la maggior parte delle formule o delle funzioni che fanno parte di Microsoft Excel(Leggiun elenco delle funzioni supportate dal motore di calcolo). Tali funzioni possono essere utilizzate tramite le API o i fogli di calcolo dei designer. Aspose.Cells supporta un enorme set di formule matematiche, stringhe, booleane, data/ora, statistiche, database, di ricerca e di riferimento.
Usa ilFormula proprietà oImpostaFormula(…) metodi delCellclass per aggiungere una formula a una cella. Quando si applica una formula, iniziare sempre la stringa con un segno di uguale (=) come si fa quando si crea una formula in Microsoft Excel e utilizzare una virgola (,) per delimitare i parametri della funzione.
Per calcolare i risultati delle formule, l’utente può chiamare il fileCalcolaFormula metodo delCartella di lavoroclasse che elabora tutte le formule incorporate in un file Excel. Oppure, l’utente può chiamare ilCalcolaFormula metodo delFoglio di lavoro classe che elabora tutte le formule incorporate in un foglio. Oppure, l’utente può anche chiamare ilCalcolare metodo delCellclasse che elabora la formula di uno 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"); |
Importante da sapere
Calcolo diretto della formula
Aspose.Cells ha un motore di calcolo delle formule incorporato. Oltre a calcolare le formule importate da un file di progettazione, Aspose.Cells può calcolare direttamente i risultati delle formule.
A volte, è necessario calcolare direttamente i risultati delle formule senza aggiungerli a un foglio di lavoro. I valori delle celle utilizzate nella formula esistono già in un foglio di lavoro e tutto ciò che serve è trovare il risultato di quei valori in base a una formula di Excel Microsoft senza aggiungere la formula in un foglio di lavoro.
È possibile utilizzare le API del motore di calcolo della formula Aspose.Cells perFoglio di lavoro acalcolare i risultati di tali formule senza aggiungerli al foglio di lavoro:
// 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()); |
Il codice precedente produce il seguente output:
Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0
Calcolo di formule ripetutamente
Quando sono presenti molte formule nella cartella di lavoro e l’utente deve calcolarle ripetutamente modificandone solo una piccola parte, potrebbe essere utile per le prestazioni abilitare la catena di calcolo della formula: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()); |
Importante da sapere
Argomenti avanzati
- Aggiungi Cells a Microsoft Finestra di controllo della formula di Excel
- Aspose.Cells Motore di calcolo delle formule
- Calcolo della funzione IFNA utilizzando Aspose.Cells
- Calcolo della formula di matrice delle tabelle di dati
- Calcolo delle funzioni MINIFS e MAXIFS di Excel 2016
- Diminuire il tempo di calcolo del metodo Cell.Calculate
- Rilevamento del riferimento circolare
- Calcolo diretto della funzione personalizzata senza scriverla in un foglio di lavoro
- Implementa il motore di calcolo personalizzato per estendere il motore di calcolo predefinito di Aspose.Cells
- Interrompere o annullare il calcolo della formula della cartella di lavoro
- Restituzione di un intervallo di valori utilizzando AbstractCalculationEngine
- Restituzione di un intervallo di valori tramite ICustomFunction
- Utilizzo della funzione ICustomFunction