Calcola o ricalcola le formule dinamicamente

Il motore di calcolo delle Formule è integrato in Aspose.Cells. Non solo può ricalcolare la formula importata dal file del designer ma supporta anche il calcolo dei risultati delle formule aggiunte a tempo di esecuzione.

Aggiungere Formule & Calcolare i Risultati

Aspose.Cells supporta la maggior parte delle formule o funzioni che fanno parte di Microsoft Excel. Gli sviluppatori possono utilizzare queste formule tramite API o Fogli di calcolo Designer. Aspose.Excel supporta un ampio set di formule matematiche, stringhe, booleani, date/orari, statistiche, database, ricerca e riferimento.

Utilizzare la proprietà Formula della classe Cell per aggiungere una formula a una cella. Quando si applica una formula a una cella, iniziare sempre la stringa con un segno uguale (=) come si fa quando si crea una formula in Microsoft Excel. Utilizzare una virgola (,) per delimitare i parametri della funzione.

Per calcolare i risultati delle formule, chiamare il metodo CalculateFormula della classe Excel che elabora tutte le formule incorporate in un file Excel. Leggere l'url:elenco delle funzioni supportate dal metodo 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");

Calcolare le Formule Solo una Volta

Quando l’utente chiama Workbook.CalculateFormula() per calcolare i valori delle formule all’interno del modello di cartella di lavoro, Aspose.Cells crea una catena di calcoli. Aumenta le prestazioni quando le formule vengono calcolate per la seconda o terza volta ecc. Tuttavia, se il modello dell’utente contiene molte formule diverse, allora la prima volta del calcolo della formula può consumare molto tempo di elaborazione della CPU e memoria.

Aspose.Cells consente di disabilitare la creazione di una catena di calcolo, il che è utile in scenari in cui si desidera calcolare le formule del proprio file solo una volta.

Se si desidera migliorare le prestazioni dei calcoli delle formule di Aspose.Cells e non si desidera creare una catena di calcolo di formule, impostare FormulaSettings.EnableCalculationChain su false. Per impostazione predefinita, è impostato su 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);

Calcolo Diretto della Formula

Il motore di calcolo delle formule è integrato in Aspose.Cells. Inoltre, oltre a ricalcolare la formula importata dal file del designer, Aspose.Cells supporta anche il calcolo diretto dei risultati delle formule. A volte è necessario calcolare direttamente i risultati delle formule senza aggiungerle effettivamente in un foglio di lavoro. I valori delle celle utilizzate nella formula esistono già in un foglio di lavoro e tutto ciò di cui si ha bisogno è trovare il risultato di quei valori basato su una formula Ms-Excel senza aggiungere la formula in un foglio di lavoro.

È possibile utilizzare l’API del motore di calcolo delle formule di Aspose.Cells, ovvero worksheet.Calculate(string formula), per calcolare i risultati di tali formule senza aggiungerle effettivamente al foglio di lavoro.

 //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");

Scarica il codice di esempio