Werken met formules

Overzicht

Aspose.Cells FOSS slaat formules op als Excel-compatibele tekenreeksen. De bibliotheek doet niet evalueren van formules intern — hij behoudt de uitdrukking letterlijk in het bestand, en de spreadsheet‑applicatie (Excel, LibreOffice Calc, of elke compatibele lezer) berekent het resultaat wanneer het bestand wordt geopend.

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

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

Beide benaderingen slaan dezelfde gegevens op. De constructorvorm is compact wanneer je een blad vanaf nul bouwt; de eigenschapsvorm is natuurlijker wanneer je al een verwijzing naar een bestaande cel hebt en er een formule aan wilt koppelen.


Instellen van een formule via de celconstructor

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

Het instellen van value=None maakt expliciet dat de cel geen statische waarde heeft — de 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 het formuleresultaat weergeven en de opgeslagen waarde negeren.


Instellen van een formule via de .formula eigenschap

Ken direct toe aan cell.formula wanneer je al een celreferentie hebt of wanneer je een formule wilt 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")

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 is 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 gemaakt met Cell(None, formula).
Als je een bestaande werkmap laadt die eerder is opgeslagen met berekende waarden
gecachte naast formules, .value kan het laatst gecachte resultaat retourneren — maar dit
gedrag hangt af van hoe de oorspronkelijke applicatie het bestand heeft opgeslagen en mag
niet worden vertrouwd voor verse berekeningen.

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

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

Algemene Excel‑formules

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

DoelFormule tekenreeksOpmerkingen
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)Geeft het grootste getal terug
Minimumwaarde=MIN(A1:A10)Geeft het kleinste getal terug
Tel numerieke cellen=COUNT(A1:A10)Telt alleen cellen met numerieke waarden
Tel niet-lege cellen=COUNTA(A1:A10)Telt elke niet-lege cel
Voorwaardelijke waarde=IF(A1>100,"High","Low")Drie-argumenten vorm: test, waar-waarde, onwaar-waarde
Verticale opzoeking=VLOOKUP(D1,A1:B10,2,FALSE)Exacte overeenkomst (FALSE) aanbevolen
Strings samenvoegen=CONCATENATE(A1," ",B1)Of gebruik =A1&" "&B1
Een getal afronden=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 weergegeven voor leesbaarheid.


Volledig voorbeeld

Het volgende voorbeeld maakt een dataset met vijf rijen numerieke waarden in kolom A, schrijft vervolgens SUM, AVERAGE, MAX en MIN‑formules in 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

Notities

Formule‑strings moeten beginnen met =

De bibliotheek slaat de tekenreeks op zoals hij is. Het weglaten van de leidende = zorgt ervoor dat de spreadsheet‑lezer de tekst behandelt als een letterlijke tekenreeks in plaats van 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)"

Bereikverwijzingen gebruiken de standaard Excel A1-notatie

Rij‑kolomreeksen worden geschreven als FirstCell:LastCell met hoofdletterkolomletters
en één‑gebaseerde rijnummers: "A1:A10", "B2:D5", "C3:C3". De FOSS
bibliotheek vertaalt of valideert de bereik‑string niet — een ongeldige reeks wordt
letterlijk opgeslagen en veroorzaakt een fout in de spreadsheet‑lezer bij het openen.

Formules worden opgeslagen als strings, niet geëvalueerd

Aspose.Cells FOSS bevat geen formule‑engine. Als u het berekende resultaat van een formule in Python nodig heeft (bijvoorbeeld om verdere berekeningen uit te voeren), bereken dan zelf de waarde 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