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å:
- Cell constructor —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaegenskab —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ål | Formelstreng | Bemæ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ække | Formel | Forventet 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å
- API Reference: Fuld klasse- og metode-dokumentation for
aspose.cells_foss - Knowledge Base: Opgaveorienterede vejledninger
- Product Overview: Oversigt over funktioner og muligheder
- Getting Started / Installation: pip-installation og opsætning
- Blog: Introducing Aspose.Cells FOSS: Biblioteksoversigt og hurtig start