Arbejde med formler

Oversigt

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.

Der er to måder at placere en formel i en celle på:

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

Begge tilgange gemmer de samme data. Konstruktørformen er kompakt, når du bygger et ark fra bunden; egenskabsformen er mere naturlig, når du allerede har en reference til en eksisterende celle og vil vedhæfte en formel til den.


Indstilling af en formel via Cell‑konstruktøren

Den Cell konstruktorsignatur er Cell(value, formula). For at oprette en ren formelcelle, videregiv None som værdien og udtryksstrengen som den anden 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")

Indstilling value=None gør det eksplicit, at cellen ikke har nogen statisk værdi — dens viste indhold kommer udelukkende fra formlen. At videregive en ikke-None værdi ved siden af en formel er tilladt, men usædvanligt; de fleste regnearkslæser vil vise formelresultatet og ignorere den gemte værdi.


Indstilling af en formel via .formula Egenskab

Tildel direkte til cell.formula når du allerede har en cellehenvisning eller når du vil tilføje en formel til en celle, der tidligere var skrevet med en værdi:

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

Læse en formel tilbage

Efter at have skrevet en formelcelle, brug .formula for at hente udtryksstrengen og .value for at hente den statiske værdi (hvis nogen), der var gemt ved siden af 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 oprettet med Cell(None, formula). Hvis du indlæser en eksisterende projektmappe, der tidligere blev gemt med beregnede værdier cachet ved siden af formler, .value kan returnere det sidste cachede resultat — men dette adfærd afhænger af, hvordan den oprindelige applikation gemte filen, og bør ikke stole på for friske beregninger.

For at skelne en formelcelle fra en ren‑værdicelle ved kørselstid:

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

Almindelige Excel-formler

Følgende tabel viser ofte anvendte Excel-funktioner med eksempelformelstrenge, som du kan sende direkte til Aspose.Cells FOSS.

FormålFormelstrengNoter
Summér et område=SUM(A1:A10)Lægger alle numeriske værdier i området sammen
Gennemsnit af et område=AVERAGE(A1:A10)Ignorerer tomme celler
Maksimal værdi=MAX(A1:A10)Returnerer det største tal
Minimumsværdi=MIN(A1:A10)Returnerer det mindste tal
Tæl numeriske celler=COUNT(A1:A10)Tæller kun celler med numeriske værdier
Tæl ikke-tomme celler=COUNTA(A1:A10)Tæller enhver celle, der ikke er tom
Betinget værdi=IF(A1>100,"High","Low")Tre-argument form: test, sandt-resultat, falsk-resultat
Vertikal opslag=VLOOKUP(D1,A1:B10,2,FALSE)Eksakt match (FALSE) anbefales
Sammenkæd strenge=CONCATENATE(A1," ",B1)Eller brug =A1&" "&B1
Afrund et tal=ROUND(A1,2)Anden argument er decimalpladser

Alle formelstrenge skal begynde med =. Funktionsnavne er case‑insensitive i Excel‑kompatible filer, men den konventionelle store bogstavform vises ovenfor for læsbarhed.


Komplet eksempel

Følgende eksempel opretter et datasæt på fem rækker med numeriske værdier i kolonne A, skriver derefter SUM, AVERAGE, MAX og MIN formler ind i kolonne B og gemmer resultatet i 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 fil åbnes i Excel eller LibreOffice Calc, vil kolonne C vise:

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

Noter

Formelstrenge skal starte med =

Biblioteket gemmer strengen som den er. Udeladelse af den indledende = forårsager, at regnearks‑læseren behandler teksten som en bogstavelig 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 bruger standard Excel A1‑notation

Række‑kolonne‑områder skrives som FirstCell:LastCell ved brug af store kolonne bogstaver og én‑baserede rækkenumre: "A1:A10", "B2:D5", "C3:C3". Den FOSS biblioteket oversætter eller validerer ikke område‑strengen — en ugyldig række vil blive gemt ordret og forårsage en fejl i regnearks‑læseren ved åbningstidspunktet.

Formler gemmes som strenge, ikke evalueret

Aspose.Cells FOSS does not include a formula engine. If you need the computed resultatet af en formel i Python (for eksempel for at udføre yderligere beregninger), beregn værdien selv og skriv den som en statisk værdi med .value. Brug formler kun når slutbrugeren åbner filen i et regnearksprogram som kan evaluere dem.

Se også

 Dansk