Arbejde med formler

Oversigt

Aspose.Cells FOSS gemmer formler som Excel‑kompatible strenge. Biblioteket evaluerer ikke formler internt — det bevarer udtrykket ordret i filen, og regnearksapplikationen (Excel, LibreOffice Calc eller enhver kompatibel læser) beregner resultatet, når filen åbnes.

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

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

Begge tilgange gemmer de samme data. Konstruktorformen 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 cellekonstruktøren

Cell-konstruktørens signatur er Cell(value, formula). For at oprette en ren formelcelle, send None som værdien og udtryksstrengen som det andet 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")

Indstillingen 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 sammen med en formel er tilladt, men usædvanligt; de fleste regnearkslæserprogrammer vil vise formelresultatet og ignorere den gemte værdi.


Indstilling af en formel via .formula-egenskaben

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æser en formel tilbage

Efter at have skrevet en formelcelle, brug .formula til at hente udtryksstrengen og .value til at hente den eventuelle statiske værdi (hvis nogen), der blev 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 er gemt med beregnede værdier
cachet sammen med formler, .value kan returnere det sidste cachede resultat — men denne
opførsel 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 almindelig værdi‑celle 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 opremser ofte anvendte Excel‑funktioner med eksempelformelstrenge, som du kan videregive direkte til Aspose.Cells FOSS.

FormålFormelstrengBemærkninger
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
Minimal væ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
Kæd strenge sammen=CONCATENATE(A1," ",B1)Eller brug =A1&" "&B1
Afrund et tal=ROUND(A1,2)Anden argument er decimaler

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


Komplet eksempel

Det følgende eksempel opretter et datasæt med fem rækker af 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. At udelade den førende = får regnearkslæseren til at behandle 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". FOSS‑
biblioteket oversætter eller validerer ikke område‑strengen — et ugyldigt område vil blive gemt ordret og forårsage en fejl i regnearks‑læseren ved åbningstid.

Formler gemmes som strenge, ikke evalueret

Aspose.Cells FOSS inkluderer ikke en formelmotor. Hvis du har brug for det beregnede resultat 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 vil åbne filen i et regnearksprogram, der kan evaluere dem.

Se også

 Dansk