Calcola le formule

Aggiungere Formule & Calcolare i Risultati

Aspose.Cells dispone di un motore di calcolo delle formule integrato. Non solo può ricalcolare le formule importate dai modelli di progettazione ma supporta anche il calcolo dei risultati delle formule aggiunte durante l’esecuzione.

Aspose.Cells supporta la maggior parte delle formule o funzioni che fanno parte di Microsoft Excel (Leggi un elenco delle funzioni supportate dal motore di calcolo). Queste funzioni possono essere utilizzate tramite le API o fogli di calcolo di progettazione. Aspose.Cells supporta un ampio set di formule matematiche, per stringhe, booleane, data/ora, statistiche, di database, di ricerca e di riferimento.

Utilizza la proprietà Formula o i metodi SetFormula(…) della classe Cell per aggiungere una formula a una cella. Quando si applica una formula, inizia sempre la stringa con un segno uguale (=) come faresti quando crei una formula in Microsoft Excel e utilizza una virgola (,) per delimitare i parametri della funzione.

Per calcolare i risultati delle formule, l’utente può chiamare il metodo CalculateFormula della classe Workbook che elabora tutte le formule incorporate in un file Excel. Oppure, l’utente può chiamare il metodo CalculateFormula della classe Worsheet che elabora tutte le formule incorporate in un foglio. In alternativa, l’utente può chiamare il metodo Calculate della classe Cell che elabora la formula di una cella:

// 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 sapere

Calcolo Diretto della Formula

Aspose.Cells dispone di un motore di calcolo delle formule integrato. Oltre a calcolare le formule importate da un file del progettista, Aspose.Cells può calcolare direttamente i risultati delle formule.

A volte è necessario calcolare direttamente i risultati delle formule senza aggiungerli in un foglio di lavoro. I valori delle celle utilizzati nella formula esistono già in un foglio di lavoro e tutto ciò che serve è trovare il risultato di quei valori in base a una certa formula di Microsoft Excel senza aggiungere la formula in un foglio di lavoro.

Puoi utilizzare le API del motore di calcolo delle formule di Aspose.Cells per Worksheet per calculate i risultati di tali formule senza aggiungerle 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 sopra produce il seguente output:

Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0

Calcolando le Formule ripetutamente

Quando ci sono molte formule nel workbook e l’utente ha bisogno di calcolarle ripetutamente modificandone solo una piccola parte, potrebbe essere utile per le prestazioni abilitare la catena di calcolo delle formule: 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 sapere

Argomenti avanzati