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:
- Celconstructor —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaeigenschap —ws.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.
| Doel | Formule tekenreeks | Opmerkingen |
|---|---|---|
| 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:
| Rij | Formule | Verwacht 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
- API Reference: Volledige klasse- en methodedocumentatie voor
aspose.cells_foss - Knowledge Base: Taakgerichte handleidingen
- Product Overview: Samenvatting van functies en mogelijkheden
- Getting Started / Installation: pip install en configuratie
- Blog: Introducing Aspose.Cells FOSS: Bibliotheekoverzicht en snelle start