Arbeiten mit Formeln

Übersicht über die

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 einer Zelle zu platzieren:

  1. Zellkonstruktor Ich bin hier. ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula Eigentum Ich bin hier. ws.cells["A4"].formula = "=SUM(A1:A3)"

Beide Ansätze speichern die gleichen Daten. Die Konstruktorform ist kompakt, wenn Sie ein Blatt von Grund auf erstellen; die Eigenschaftsform wird natürlicher, Wenn Sie bereits einen Bezug zu einer vorhandenen Zelle haben und eine Formel dazu anhängen möchten.


Einrichten einer Formel über den Zellkonstruktor

Die Cell Konstruktor-Signatur ist: Cell(value, formula).Um eine reine Formelzelle, Pass None als der Wert und die Ausdrucksergebnis-Strecke als zweite Argument: Die:

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 es explizit, dass die Zelle keinen statischen Wert hat - seine Die in der Veröffentlichung dargestellten Inhalte stammen ausschließlich aus der Formel.None Wert der Neben einer Formel ist erlaubt, aber ungewöhnlich; die meisten Tabellenleser werden angezeigt die Formel und ignorieren den gespeicherten Wert.


Die Festlegung einer Formel über die .formula Immobilien und Vermögenswerte

Direkt an die cell.formula wenn Sie bereits eine Zellreferenz haben oder wenn Sie wollen eine Formel zu einer Zelle hinzufügen, die vorher mit einem Wert geschrieben wurde:

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

Das Lesen einer Formel zurück

Nach dem Eintragen einer Formelzelle wird verwendet: .formula um den Ausdruckstring abzurufen und . .value Um den statischen Wert (falls vorhanden) abzurufen, der neben ihm 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 die, .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 im Cache neben Formeln gespeichert, .value kann das letzte zwischengespeicherte Ergebnis zurückgeben, aber dies ist nicht der Fall. Das Verhalten hängt davon ab, wie die ursprüngliche Anwendung die Datei gespeichert hat und sollte nicht für neue Berechnungen zu verwenden.

Um eine Formelzelle während der Ausführung von einer reinen Zelle zu unterscheiden:

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

Allgemeine Excel-Formeln

Die folgende Tabelle listet häufig verwendete Excel-Funktionen mit Beispielschriften für Formeln auf, die Sie direkt an Aspose.Cells FOSS weitergeben können.

Zweck der VeranstaltungFormel-StreifenAnmerkungen
Summe eines Bereichs=SUM(A1:A10)Summiert alle Zahlenwerte im Bereich
Durchschnitt eines Bereichs=AVERAGE(A1:A10)Leere Zellen ignoriert
Höchstwert=MAX(A1:A10)Gibt die größte Zahl zurück.
Mindestwert=MIN(A1:A10)Gibt die kleinste Zahl zurück.
Zählerzellen zählen=COUNT(A1:A10)Zellen mit nur numerischen Werten zählt
Nicht leere Zellen zählen=COUNTA(A1:A10)Zählbarkeit der nicht leeren Zellen
Bedingter Wert=IF(A1>100,"High","Low")Drei-Argumentform: Test, wahrer Ergebnis, falscher Ergebnissen
Vertikalsuche=VLOOKUP(D1,A1:B10,2,FALSE)Genaue Übereinstimmung (FALSE) empfohlen.
Konkadenisierte Zeichenfolgen=CONCATENATE(A1," ",B1)Oder verwenden Sie =A1&" "&B1
Rund eine Zahl.=ROUND(A1,2)Zweite Arg ist Dezimalstellen.

Alle Formelstrings müssen mit beginnen. =.Funktionsnamen sind in der Schrift “Funktion” nicht für Großbuchstaben empfindlich. Excel-kompatible Dateien, aber die herkömmliche Großbuchstabenform ist oben für Lesbarkeit.


Vollständiges Beispiel

Das folgende Beispiel erstellt einen Datensatz mit fünf Zeilen numerischer Werte in Spalte A, schreibt dann die Formeln SUMMER, AVERAGE, MAX und MIN in die Spalle B ein 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 sich die Spalte C:

ZeileFormel für dieErwartetes Ergebnis
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Anmerkungen

Formelstrings müssen mit beginnen: =

Die Bibliothek speichert die Zeichenfolge so, wie sie ist. = verursacht die Tabellenleser, um den Text eher als Buchstabenzeichen als Formeln 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)"

Bereiche Verweise verwenden Standard Excel A1 Notation

Zeilen-Spaltenbereiche werden als: FirstCell:LastCell mit Großbuchstaben in der Spalte Buchstaben und Zeilenummern auf einer Basis: "A1:A10", "B2:D5", "C3:C3".Die FOSS . Bibliothek übersetzt oder validiert nicht die Reihe der Bereiche - ein ungültiger Bereich wird Die Daten werden wörtlich gespeichert und verursachen einen Fehler im Tabellenleser zur Zeit der Öffnung.

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 es als statischen Wert mit .value.- Verwenden . Formeln nur, wenn der Endbenutzer die Datei in einer Tabellenanwendung öffnet. die sie bewerten können.

Siehe auch:

 Deutsch