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å:
- Cellekonstruktør —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaegenskab —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ål | Formelstreng | Noter |
|---|---|---|
| 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æ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. 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å
- API Reference: Fuld klasse- og metodedokumentation for
aspose.cells_foss - Vidensbase: Opgaveorienterede vejledninger
- Produktoversigt: Oversigt over funktioner og kapaciteter
- Kom i gang / Installation: pip install og opsætning
- Blog: Introduktion af Aspose.Cells FOSS: Biblioteksoversigt og hurtig start