Arbeide med formler

Oversikt

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.

Det finnes to måter å sette inn en formel i en celle på:

  1. Cellekonstruktør — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula egenskap — ws.cells["A4"].formula = "=SUM(A1:A3)"

Begge tilnærmingene lagrer de samme dataene. Konstruktørformen er kompakt når du bygger et ark fra bunnen av; egenskapsformen er mer naturlig når du allerede har en referanse til en eksisterende celle og vil knytte en formel til den.


Angi en formel via Cell‑konstruktøren

Den Cell konstruktorsignaturen er Cell(value, formula). For å lage en ren formelcelle, send inn None som verdien og uttrykksstrengen som den andre argumentet:

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

Innstilling value=None gjør det eksplisitt at cellen ikke har noen statisk verdi — dens viste innhold kommer helt fra formelen. Å sende inn en ikke-None verdi ved siden av en formel er tillatt, men uvanlig; de fleste regnearklesere vil vise formelresultatet og ignorere den lagrede verdien.


Angir en formel via .formula Egenskap

Tildel direkte til cell.formula når du allerede har en celereferanse eller når du vil legge til en formel i en celle som tidligere ble skrevet med en verdi:

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

Lese en formel tilbake

Etter å ha skrevet en formelcelle, bruk .formula for å hente uttrykksstrengen og .value for å hente hvilken som helst statisk verdi (om noen) som ble lagret ved siden av den.

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)

I praksis, .value er None for enhver celle opprettet med Cell(None, formula). Hvis du laster inn en eksisterende arbeidsbok som tidligere ble lagret med beregnede verdier bufret ved siden av formler, .value kan returnere det siste bufrede resultatet — men dette oppførselen avhenger av hvordan den opprinnelige applikasjonen lagret filen og bør ikke stole på for ferske beregninger.

For å skille en formelcelle fra en vanlig verdi‑celle ved kjøring:

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

Vanlige Excel-formler

Tabellen nedenfor viser ofte brukte Excel-funksjoner med eksempelformelstrenger du kan sende direkte til Aspose.Cells FOSS.

FormålFormelstrengMerknader
Summer et område=SUM(A1:A10)Legger sammen alle numeriske verdier i området
Gjennomsnitt av et område=AVERAGE(A1:A10)Ignorerer tomme celler
Maksimumsverdi=MAX(A1:A10)Returnerer det største tallet
Minimumsverdi=MIN(A1:A10)Returnerer det minste tallet
Tell numeriske celler=COUNT(A1:A10)Teller kun celler med numeriske verdier
Tell ikke-tomme celler=COUNTA(A1:A10)Teller enhver ikke-tom celle
Betinget verdi=IF(A1>100,"High","Low")Tre-argument form: test, sann-resultat, falsk-resultat
Vertikal oppslag=VLOOKUP(D1,A1:B10,2,FALSE)Eksakt treff (FALSE) anbefalt
Kombiner strenger=CONCATENATE(A1," ",B1)Eller bruk =A1&" "&B1
Rund av et tall=ROUND(A1,2)Andre argument er desimalplasser

Alle formelstrenger må begynne med =. Funksjonsnavn er ikke store- og småbokstavfølsomme i Excel-kompatible filer, men den konvensjonelle store bokstavformen vises ovenfor for lesbarhet.


Fullstendig eksempel

Eksemplet nedenfor lager et datasett med fem rader med numeriske verdier i kolonne A, skriver deretter SUM-, AVERAGE-, MAX- og MIN-formler inn i kolonne B, og lagrer resultatet til en XLSX-fil.

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

Når denne filen åpnes i Excel eller LibreOffice Calc, vil kolonne C vise:

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

Merknader

Formelstrenger må starte med =

Biblioteket lagrer strengen som den er. Å utelate den ledende = forårsaker at regnearkleseren behandler teksten som en bokstavelig streng i stedet for en formel.

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

Områdehenvisninger bruker standard Excel A1-notasjon

Rad-kolonne-områder skrives som FirstCell:LastCell ved å bruke store bokstaver for kolonne bokstaver og én-baserte radnumre: "A1:A10", "B2:D5", "C3:C3". Den FOSS biblioteket oversetter eller validerer ikke rekkeviddestrengen — et ugyldig område vil lagres ordrett og forårsake en feil i regnearkleseren ved åpning.

Formler lagres som strenger, ikke evaluert

Aspose.Cells FOSS does not include a formula engine. If you need the computed resultatet av en formel i Python (for eksempel for å utføre videre beregninger), beregn verdien selv og skriv den som en statisk verdi med .value. Bruk formler kun når sluttbrukeren åpner filen i et regnearkprogram som kan evaluere dem.

Se også

 Norsk