Arbeiten mit Formeln

Übersicht

Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally — it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.

Es gibt zwei Möglichkeiten, eine Formel in eine Zelle einzufügen:

  1. Zellenkonstruktor — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula Eigenschaft — ws.cells["A4"].formula = "=SUM(A1:A3)"

Beide Ansätze speichern dieselben Daten. Die Konstruktor-Variante ist kompakt, wenn Sie ein Blatt von Grund auf neu erstellen; die Eigenschafts-Variante ist natürlicher, wenn Sie bereits eine Referenz auf eine vorhandene Zelle haben und ihr eine Formel zuweisen möchten.


Eine Formel über den Cell-Konstruktor setzen

Die Cell Signatur des Konstruktors ist Cell(value, formula). Um eine reine Formelzelle, übergeben None als den Wert und den Ausdrucks-String als das zweite Argument:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)

##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")

workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")

Einstellung value=None macht deutlich, dass die Zelle keinen statischen Wert hat — ihr angezeigter Inhalt stammt vollständig aus der Formel. Das Übergeben eines nicht-None Werts neben einer Formel ist erlaubt, aber ungewöhnlich; die meisten Tabellenkalkulationsprogramme zeigen das Formel‑Ergebnis an und ignorieren den gespeicherten Wert.


Eine Formel setzen über die .formula Eigenschaft

Direkt zuweisen an cell.formula wenn Sie bereits eine Zellreferenz besitzen oder wenn Sie einer Zelle, die zuvor mit einem Wert geschrieben wurde, eine Formel hinzufügen möchten:

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
    ws.cells[f"A{i}"].value = val

##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"

##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"

workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")

Eine Formel wieder auslesen

Nach dem Schreiben einer Formlezelle verwenden Sie .formula um die Ausdruckszeichenkette abzurufen und .value um den beliebigen statischen Wert (falls vorhanden) abzurufen, der zusammen damit gespeichert wurde.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")

cell = ws.cells["A1"]

print(cell.formula)   # =SUM(B1:B5)
print(cell.value)     # None  (no static value was set)

In der Praxis, .value ist None für jede Zelle, die mit Cell(None, formula). Wenn Sie eine vorhandene Arbeitsmappe laden, die zuvor mit berechneten Werten gespeichert wurde zusammen mit Formeln zwischengespeichert, .value kann das zuletzt zwischengespeicherte Ergebnis zurückgeben — aber das Verhalten hängt davon ab, wie die ursprüngliche Anwendung die Datei gespeichert hat und sollte nicht für frische Berechnungen verwendet werden.

Um zur Laufzeit zwischen einer Formelzelle und einer reinen Wertzelle zu unterscheiden:

cell = ws.cells["A1"]
if cell.formula:
    print(f"Formula cell: {cell.formula}")
else:
    print(f"Value cell: {cell.value}")

Gängige Excel-Formeln

Die folgende Tabelle listet häufig verwendete Excel-Funktionen mit Beispiel-Formelzeichenketten auf, die Sie direkt an Aspose.Cells FOSS übergeben können.

ZweckFormelformelzeichenketteHinweise
Summe eines Bereichs=SUM(A1:A10)Addiert alle numerischen Werte im Bereich
Durchschnitt eines Bereichs=AVERAGE(A1:A10)Ignoriert leere Zellen
Maximalwert=MAX(A1:A10)Gibt die größte Zahl zurück
Minimalwert=MIN(A1:A10)Gibt die kleinste Zahl zurück
Zählt numerische Zellen=COUNT(A1:A10)Zählt Zellen nur mit numerischen Werten
Zähle nicht-leere Zellen=COUNTA(A1:A10)Zählt jede nicht-leere Zelle
Bedingter Wert=IF(A1>100,"High","Low")Drei-Argument-Form: Test, Ergebnis‑wenn‑wahr, Ergebnis‑wenn‑falsch
Vertikaler SVERWEIS=VLOOKUP(D1,A1:B10,2,FALSE)Exakte Übereinstimmung (FALSE) empfohlen
Zeichenketten verketten=CONCATENATE(A1," ",B1)Oder verwenden =A1&" "&B1
Eine Zahl runden=ROUND(A1,2)Das zweite Argument ist Dezimalstellen

Alle Formelzeichenketten müssen beginnen mit =. Funktionsnamen sind in Excel-kompatiblen Dateien, aber die konventionelle Großschreibweise wird oben für Lesbarkeit.


Vollständiges Beispiel

Das folgende Beispiel erzeugt einen fünfzeiligen Datensatz numerischer Werte in Spalte A, schreibt dann SUM-, AVERAGE-, MAX- und MIN‑Formeln in Spalte B und speichert das Ergebnis in einer XLSX‑Datei.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"

##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
    ws.cells[f"A{i}"].value = val

##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"

##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")

##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")

Wenn diese Datei in Excel oder LibreOffice Calc geöffnet wird, zeigt Spalte C:

ZeileFormelErwartetes Ergebnis
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Hinweise

Formelzeichenketten müssen beginnen mit =

Die Bibliothek speichert die Zeichenkette unverändert. Das Weglassen des führenden = verursacht das Spreadsheet‑Reader dazu veranlassen, den Text als wörtliche Zeichenkette statt als Formel zu behandeln.

##Correct — starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"

##Wrong — treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"

Bereichsbezüge verwenden die standardmäßige Excel‑A1‑Notation

Zeilen‑Spalten‑Bereiche werden geschrieben als FirstCell:LastCell unter Verwendung von Großbuchstaben für die Spalten Buchstaben und einbasierte Zeilennummern: "A1:A10", "B2:D5", "C3:C3". Die FOSS Bibliothek übersetzt oder validiert den Bereichs‑String nicht — ein ungültiger Bereich wird wortwörtlich gespeichert und verursacht beim Öffnen einen Fehler im Spreadsheet‑Reader.

Formeln werden als Zeichenketten gespeichert, nicht ausgewertet

Aspose.Cells FOSS does not include a formula engine. If you need the computed Ergebnis einer Formel in Python (zum Beispiel, um weitere Berechnungen durchzuführen), Berechnen Sie den Wert selbst und schreiben Sie ihn als statischen Wert mit .value. Verwenden Sie Formeln nur, wenn der Endbenutzer die Datei in einer Tabellenkalkulations‑Anwendung öffnet. die sie auswerten können.

Siehe auch

 Deutsch