Formeln dynamisch berechnen oder neu berechnen
Formelberechnung Motor ist eingebettetAspose.Cells. Es kann nicht nur die aus der Designerdatei importierte Formel neu berechnen, sondern unterstützt auch die Berechnung der Ergebnisse von zur Laufzeit hinzugefügten Formeln.
Formeln hinzufügen und Ergebnisse berechnen
Aspose.Cells unterstützt die meisten Formeln oder Funktionen, die Teil von Microsoft Excel sind. Entwickler können diese Formeln mit API oder Designer Spreadsheets verwenden. Aspose.Excel unterstützt eine Vielzahl von mathematischen, Zeichenfolgen-, booleschen, Datums-/Uhrzeit-, statistischen, Datenbank-, Such- und Referenzformeln.
Verwenden Sie die Formula-Eigenschaft der Cell-Klasse, um einer Zelle eine Formel hinzuzufügen. Wenn Sie eine Formel auf eine Zelle anwenden, beginnen Sie die Zeichenfolge immer mit einem Gleichheitszeichen (=), wie Sie es auch beim Erstellen einer Formel in Microsoft Excel tun. Verwenden Sie ein Komma (,), um Funktionsparameter zu begrenzen.
Um die Ergebnisse der Formeln zu berechnen, rufen Sie die CalculateFormula-Methode der Excel-Klasse auf, die alle in einer Excel-Datei eingebetteten Formeln verarbeitet. Lies dasurl:Liste der Funktionen, die von der CalculateFormula-Methode unterstützt werden.
//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");
Formeln nur einmal berechnen
Wenn der Benutzer Workbook.CalculateFormula() aufruft, um die Werte der Formeln in der Arbeitsmappenvorlage zu berechnen, erstellt Aspose.Cells eine Berechnungskette. Es erhöht die Leistung, wenn Formeln zum zweiten oder dritten Mal berechnet werden usw. Wenn die Benutzervorlage jedoch viele verschiedene Formeln enthält, kann die erste Formelberechnung viel CPU-Verarbeitungszeit und Speicher verbrauchen.
Mit Aspose.Cells können Sie das Erstellen einer Berechnungskette deaktivieren, was in Szenarien nützlich ist, in denen Sie Formeln Ihrer Datei nur einmal berechnen möchten.
Wenn Sie die Leistung von Formelberechnungen durch Aspose.Cells verbessern möchten und keine Formelberechnungskette erstellen möchten, dann stellen Sie dies bitte einFormulaSettings.EnableCalculationChain alsFALSCH . Standardmäßig ist es eingestellt alswahr.
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);
Direkte Berechnung der Formel
Die Formelberechnungs-Engine ist in Aspose.Cells eingebettet. Neben der Neuberechnung der aus der Designer-Datei importierten Formel unterstützt Aspose.Cells auch die direkte Berechnung der Ergebnisse von Formeln. Manchmal müssen Sie die Ergebnisse von Formeln direkt berechnen, ohne sie tatsächlich in ein Arbeitsblatt einzufügen. Die Werte der in Formeln verwendeten Zellen sind bereits in einem Arbeitsblatt vorhanden, und alles, was Sie brauchen, ist, das Ergebnis dieser Werte basierend auf einer MS-Excel-Formel zu finden, ohne die Formel in einem Arbeitsblatt hinzuzufügen.
Sie können Aspose.Cells Formula Calculation Engine API verwenden, dh**Arbeitsblatt.Berechnen (String-Formel)**um die Ergebnisse solcher Formeln zu berechnen, ohne sie tatsächlich in das Arbeitsblatt einzufügen.
//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");