Werken met formules

Overzicht

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.

Er zijn twee manieren om een formule in een cel te plaatsen:

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

Beide benaderingen slaan dezelfde gegevens op. De constructor‑vorm is compact wanneer je een blad vanaf nul opbouwt; de eigenschap‑vorm is natuurlijker wanneer je al een referentie naar een bestaande cel hebt en daar een formule aan wilt koppelen.


Een formule instellen via de Cell‑constructor

De Cell constructorhandtekening is Cell(value, formula). Om een pure formulecel, geef None als de waarde en de expressiestring als de tweede 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")

Instellen value=None maakt expliciet dat de cel geen statische waarde heeft — zijn weergegeven inhoud komt volledig uit de formule. Het doorgeven van een niet-None waarde naast een formule is toegestaan maar ongebruikelijk; de meeste spreadsheetlezers zullen weergeven het resultaat van de formule en de opgeslagen waarde negeren.


Instellen van een formule via de .formula Eigenschap

Direct toewijzen aan cell.formula wanneer je al een celreferentie hebt of wanneer je wilt een formule toevoegen aan een cel die eerder met een waarde is geschreven:

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

Een formule teruglezen

Na het schrijven van een formulecel, gebruik .formula om de expressiestring op te halen en .value om de eventuele statische waarde (indien aanwezig) op te halen die ernaast was opgeslagen.

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 de praktijk, .value is None voor elke cel die is aangemaakt met Cell(None, formula). Als je een bestaand werkboek laadt dat eerder is opgeslagen met berekende waarden gecachte naast formules, .value kan het laatste gecachte resultaat retourneren — maar dit gedrag hangt af van hoe de oorspronkelijke applicatie het bestand heeft opgeslagen en zou niet moeten worden vertrouwd voor verse berekeningen.

Om tijdens runtime een formulecel te onderscheiden van een gewone‑waardecel:

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

Veelvoorkomende Excel-formules

De onderstaande tabel geeft veelgebruikte Excel-functies weer met voorbeeldformules die je rechtstreeks kunt doorgeven aan Aspose.Cells FOSS.

DoelFormulestringOpmerkingen
Som van een bereik=SUM(A1:A10)Voegt alle numerieke waarden in het bereik toe
Gemiddelde van een bereik=AVERAGE(A1:A10)Negeert lege cellen
Maximumwaarde=MAX(A1:A10)Retourneert het grootste getal
Minimumwaarde=MIN(A1:A10)Retourneert het kleinste getal
Tel numerieke cellen=COUNT(A1:A10)Telt cellen met uitsluitend numerieke waarden
Tel niet-lege cellen=COUNTA(A1:A10)Telt elke niet-lege cel
Voorwaardelijke waarde=IF(A1>100,"High","Low")Drie-argumentenvorm: test, waar-waarde, onwaar-waarde
Verticale zoekopdracht=VLOOKUP(D1,A1:B10,2,FALSE)Exacte overeenkomst (FALSE) aanbevolen
Strings samenvoegen=CONCATENATE(A1," ",B1)Of gebruik =A1&" "&B1
Rond een getal af=ROUND(A1,2)Tweede argument is decimalen

Alle formulestringen moeten beginnen met =. Functienamen zijn niet hoofdlettergevoelig in Excel-compatibele bestanden, maar de conventionele hoofdlettervorm wordt hierboven getoond voor leesbaarheid.


Volledig voorbeeld

Het volgende voorbeeld maakt een dataset van vijf rijen met numerieke waarden in kolom A, schrijft vervolgens SUM-, AVERAGE-, MAX- en MIN‑formules naar kolom B, en slaat het resultaat op in een XLSX‑bestand.

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

Wanneer dit bestand wordt geopend in Excel of LibreOffice Calc, zal kolom C weergeven:

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

Opmerkingen

Formule‑strings moeten beginnen met =

De bibliotheek slaat de string op zoals hij is. Het weglaten van de leidende = zorgt ervoor dat de spreadsheet-lezer de tekst als een letterlijke string behandelt in plaats van als een formule.

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

Bereik‑referenties gebruiken de standaard Excel A1-notatie

Rij‑kolombereiken worden geschreven als FirstCell:LastCell met hoofdletter‑kolom letters en één‑gebaseerde rijnummers: "A1:A10", "B2:D5", "C3:C3". De FOSS bibliotheek vertaalt of valideert de range‑string niet — een ongeldige range zal woordelijk worden opgeslagen en een fout veroorzaken in de spreadsheet-lezer bij het openen.

Formules worden opgeslagen als strings, niet geëvalueerd

Aspose.Cells FOSS does not include a formula engine. If you need the computed resultaat van een formule in Python (bijvoorbeeld om verdere berekeningen uit te voeren), bereken de waarde zelf en schrijf deze als een statische waarde met .value. Gebruik formules alleen wanneer de eindgebruiker het bestand opent in een spreadsheet‑applicatie die ze kan evalueren.

Zie ook

 Nederlands