Arbeiten mit Formeln

Übersicht

Aspose.Cells FOSS speichert Formeln als Excel‑kompatible Zeichenketten. Die Bibliothek wertet Formeln intern nicht aus — sie bewahrt den Ausdruck unverändert in der Datei, und die Tabellenkalkulationsanwendung (Excel, LibreOffice Calc oder ein kompatibler Reader) berechnet das Ergebnis, wenn die Datei geöffnet wird.

Es gibt zwei Möglichkeiten, eine Formel in einer Zelle zu platzieren:

  1. Zellenkonstruktorws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula Eigenschaftws.cells["A4"].formula = "=SUM(A1:A3)"

Beide Ansätze speichern dieselben Daten. Die Konstruktorform ist kompakt, wenn Sie ein Blatt von Grund auf neu erstellen; die Property‑Form ist natürlicher, wenn Sie bereits einen Verweis auf eine vorhandene Zelle haben und dieser eine Formel zuweisen möchten.


Festlegen einer Formel über den Zellkonstruktor

Der Cell-Konstruktor hat die Signatur Cell(value, formula). Um eine reine Formelzelle zu erstellen, übergeben Sie None als Wert und den Ausdrucks-String als zweites 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")

Das Setzen von 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 Wertes zusammen mit einer Formel ist erlaubt, aber ungewöhnlich; die meisten Tabellenkalkulationsprogramme zeigen das Formelresultat an und ignorieren den gespeicherten Wert.


Festlegen einer Formel über die .formula‑Eigenschaft

Weisen Sie cell.formula direkt zu, 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 zurücklesen

Nachdem Sie eine Formezelle geschrieben haben, verwenden Sie .formula, um die Ausdruckszeichenkette abzurufen
und .value, um den beliebigen statischen Wert (falls vorhanden) abzurufen, der daneben 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 ist .value None für jede Zelle, die mit Cell(None, formula) erstellt wurde.
Wenn Sie eine vorhandene Arbeitsmappe laden, die zuvor mit berechneten Werten
zusammen mit Formeln zwischengespeichert wurde, .value kann das zuletzt zwischengespeicherte Ergebnis zurückgeben — aber dieses
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 eine Formezelle von einer Zelle mit einfachem Wert zu unterscheiden:

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

Übliche 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.

ZweckFormelzeichenfolgeHinweise
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
Anzahl numerischer Zellen=COUNT(A1:A10)Zählt nur Zellen mit numerischen Werten
Anzahl nicht leerer Zellen=COUNTA(A1:A10)Zählt jede nicht leere Zelle
Bedingter Wert=IF(A1>100,"High","Low")Dreier‑Argument‑Form: Test, Ergebnis bei wahr, Ergebnis bei falsch
Vertikaler SVERWEIS=VLOOKUP(D1,A1:B10,2,FALSE)Exakte Übereinstimmung (FALSE) empfohlen
Zeichenketten verketten=CONCATENATE(A1," ",B1)Oder verwende =A1&" "&B1
Zahl runden=ROUND(A1,2)Zweites Argument ist die Anzahl der Dezimalstellen

Alle Formelzeichenketten müssen mit = beginnen. Funktionsnamen sind in
Excel‑kompatiblen Dateien nicht zwischen Groß‑ und Kleinschreibung unterscheidend, aber die konventionelle Großschreibweise wird oben zur besseren Lesbarkeit
angezeigt.


Vollständiges Beispiel

Das folgende Beispiel erstellt 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, wird Spalte C angezeigt:

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 mit = beginnen

Die Bibliothek speichert die Zeichenkette unverändert. Das Weglassen des führenden = führt dazu, dass der Tabellenkalkulationsleser den Text als wörtliche Zeichenkette statt als Formel behandelt.

##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)"

Bereichsverweise verwenden die standardmäßige Excel A1-Notation

Zeilen‑Spalten‑Bereiche werden als FirstCell:LastCell geschrieben, wobei Großbuchstaben für die Spalten und einbasierte Zeilennummern verwendet werden: "A1:A10", "B2:D5", "C3:C3". Die FOSS‑Bibliothek übersetzt oder validiert den Bereichs‑String nicht — ein ungültiger Bereich wird unverändert gespeichert und verursacht beim Öffnen des Tabellenkalkulations‑Lesers einen Fehler.

Formeln werden als Zeichenketten gespeichert, nicht ausgewertet

Aspose.Cells FOSS enthält keine Formelengine. Wenn Sie das berechnete
Ergebnis einer Formel in Python (z. B. 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 Tabellenkalkulationsanwendung
öffnet, die sie auswerten kann.

Siehe auch

 Deutsch