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:
- Zellkonstruktor Ich bin hier.
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaEigentum 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 Veranstaltung | Formel-Streifen | Anmerkungen |
|---|---|---|
| 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:
| Zeile | Formel für die | Erwartetes 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:
- Referenz für die API: Vollständige Klassen- und Methodenunterlagen für die
aspose.cells_foss - Wissensbasis: Aufgabenorientierte Anleitungen zur Durchführung von Maßnahmen
- Übersicht über das Produkt: Zusammenfassung der Merkmale und Fähigkeiten
- Start / Installation: Pip-Installation und -Einrichtung
- Blog: Einführung von Aspose.Cells FOSS: Übersicht über die Bibliothek und schneller Start