Formeln von Excel Dateien verwalten

Einführung

Eine der überzeugendsten Funktionen von Microsoft Excel ist die Fähigkeit, Daten mit Formeln und Funktionen zu verarbeiten. Microsoft Excel bietet eine Reihe von integrierten Funktionen und Formeln, die Benutzern helfen, komplexe Berechnungen schnell durchzuführen. Aspose.Cells bietet ebenfalls eine große Anzahl von integrierten Funktionen und Formeln, die Entwicklern die Berechnung von Werten erleichtern. Aspose.Cells unterstützt auch Add-In-Funktionen. Darüber hinaus unterstützt Aspose.Cells Array- und R1C1-Formeln in Aspose.Cells.

Wie man Formeln und Funktionen verwendet

Aspose.Cells bietet eine Klasse, Workbook, die eine Microsoft Excel-Datei repräsentiert. Die Klasse Workbook enthält eine Worksheets-Sammlung, die Zugriff auf jedes Arbeitsblatt in der Excel-Datei ermöglicht. Ein Arbeitsblatt wird durch die Klasse Worksheet repräsentiert. Die Klasse Worksheet bietet eine Cells-Sammlung. Jedes Element in der Cells-Sammlung repräsentiert ein Objekt der Klasse Cell.

Es ist möglich, Formeln auf Zellen anzuwenden, indem Eigenschaften und Methoden verwendet werden, die von der Klasse Cell angeboten werden, die im Folgenden näher erläutert werden.

  • Verwendung von integrierten Funktionen.
  • Verwendung von Add-In-Funktionen.
  • Arbeit mit Array-Formeln.
  • Erstellen einer R1C1-Formel.

Verwendung von integrierten Funktionen

Integrierte Funktionen oder Formeln werden als fertige Funktionen bereitgestellt, um die Bemühungen und die Zeit der Entwickler zu reduzieren. Siehe eine Liste der integrierten Funktionen, die von Aspose.Cells unterstützt werden. Die Funktionen sind alphabetisch aufgelistet. In Zukunft werden weitere Funktionen unterstützt.

Aspose.Cells unterstützt die meisten Formeln oder Funktionen, die von Microsoft Excel angeboten werden. Entwickler können diese Formeln über die API oder die Designtabelle verwenden. Aspose.Cells unterstützt eine große Anzahl von mathematischen, alphanumerischen, logischen, Datum/Zeit-, statistischen, Datenbank-, Such- und Verweisformeln.

Verwenden Sie die Cell-Eigenschaft der Klasse Formula, um einer Zelle eine Formel hinzuzufügen. Komplexe Formeln, zum Beispiel

 = H7*(1+IF(P7 = $L$3,$M$3, (IF(P7=$L$4,$M$4,0))))

, werden auch von Aspose.Cells unterstützt. Beim Anwenden einer Formel auf eine Zelle beginnen Sie immer die Zeichenfolge mit einem Gleichheitszeichen (=), wie Sie es bei der Erstellung einer Formel in Microsoft Excel tun, und verwenden ein Komma (,) zur Trennung der Funktionsparameter.

Im folgenden Beispiel wird eine komplexe Formel auf die erste Zelle der Cells-Sammlung eines Arbeitsblatts angewendet. Die Formel verwendet eine integrierte IF-Funktion von Aspose.Cells.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// 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[0];
// 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(dataDir + "output.xls");

Verwendung von Add-in-Funktionen

Es können benutzerdefinierte Formeln definiert werden, die als Excel-Add-In eingebunden werden sollen. Beim Setzen der Zell.Formel-Funktion funktionieren integrierte Funktionen gut, jedoch ist es erforderlich, benutzerdefinierte Funktionen oder Formeln unter Verwendung von Add-In-Funktionen zu setzen.

Aspose.Cells bietet Funktionen zur Registrierung von Add-In-Funktionen mit Worksheets.RegisterAddInFunction(). Anschließend, wenn wir cell.Formula = anyFunctionFromAddIn setzen, enthält die Ausgabedatei Excel den berechneten Wert aus der AddIn-Funktion.

Die folgende XLAM-Datei soll zum Registrieren der Add-In-Funktion verwendet werden im untenstehenden Beispielcode. Ebenso kann die Ausgabedatei “test_udf.xlsx” heruntergeladen werden, um die Ausgabe zu überprüfen.

TestUDF.xlam

test_udf.xlsx

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create empty workbook
Workbook workbook = new Workbook();
// Register macro enabled add-in along with the function name
int id = workbook.Worksheets.RegisterAddInFunction(sourceDir + @"TESTUDF.xlam", "TEST_UDF", false);
// Register more functions in the file (if any)
workbook.Worksheets.RegisterAddInFunction(id, "TEST_UDF1"); //in this way you can add more functions that are in the same file
// Access first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Access first cell
var cell = worksheet.Cells["A1"];
// Set formula name present in the add-in
cell.Formula = "=TEST_UDF()";
// Save workbook to output XLSX format.
workbook.Save(outputDir + @"test_udf.xlsx", Aspose.Cells.SaveFormat.Xlsx);

Verwendung von Array-Formel

Array-Formeln sind Formeln, die Arrays anstelle von einzelnen Zahlen als Argumente für die Funktionen, die die Formel bilden, verwenden. Wenn eine Array-Formel angezeigt wird, ist sie von geschweiften Klammern ({}) umgeben.

Einige Microsoft Excel-Funktionen geben Arrays von Werten zurück. Um mehrere Ergebnisse mit einer Array-Formel zu berechnen, geben Sie das Array in einen Zellenbereich mit derselben Anzahl von Zeilen und Spalten wie die Array-Argumente ein.

Es ist möglich, einer Zelle eine Array-Formel durch Aufruf der Methode SetArrayFormula der Klasse Cell anzuwenden. Die Methode SetArrayFormula nimmt die folgenden Parameter an:

  • Array-Formel, die Array-Formel.
  • Anzahl der Zeilen, die Anzahl der Zeilen zum Ausfüllen des Ergebnisses der Array-Formel.
  • Anzahl der Spalten, die Anzahl der Spalten zum Ausfüllen des Ergebnisses der Array-Formel.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// 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 value to B1
worksheet.Cells["B1"].PutValue(4);
// Adding a value to "B2" cell
worksheet.Cells["B2"].PutValue(5);
// Adding a value to "B3" cell
worksheet.Cells["B3"].PutValue(6);
// Adding a value to C1
worksheet.Cells["C1"].PutValue(7);
// Adding a value to "C2" cell
worksheet.Cells["C2"].PutValue(8);
// Adding a value to "C3" cell
worksheet.Cells["C3"].PutValue(9);
// Adding a SUM formula to "A4" cell
worksheet.Cells["A6"].SetArrayFormula("=LINEST(A1:A3,B1:C3,TRUE,TRUE)", 5, 3);
// Calculating the results of formulas
workbook.CalculateFormula();
// Get the calculated value of the cell
string value = worksheet.Cells["A6"].Value.ToString();
// Saving the Excel file
workbook.Save(dataDir + "output.xls");

Verwendung der R1C1-Formel

Fügen Sie einer Zelle mit der Cell Klasse die Eigenschaft R1C1Formula hinzu.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "Book1.xls");
Worksheet worksheet = workbook.Worksheets[0];
// Setting an R1C1 formula on the "A11" cell,
// Row and Column indeces are relative to destination index
worksheet.Cells["A11"].R1C1Formula = "=SUM(R[-10]C[0]:R[-7]C[0])";
// Saving the Excel file
workbook.Save(dataDir + "output.xls");

Erweiterte Themen