Kaavojen käsittely

Yleiskatsaus

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.

Kaavan sijoittamiseen soluun on kaksi tapaa:

  1. Solun konstruktori – ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula ominaisuus â– ws.cells["A4"].formula = "=SUM(A1:A3)"

Molemmat lähestymistavat tallentavat samat tiedot. Konstruktori-muoto on tiivis, kun rakennat taulukkoa alusta alkaen; ominaisuus-muoto on luontevampi, kun sinulla on jo viite olemassa olevaan soluun ja haluat liittää siihen kaavan.


Kaavan asettaminen Cell-rakentajan kautta

Tämä Cell konstruktorin allekirjoitus on Cell(value, formula). Luodaksesi puhtaan kaavasolun, anna None arvona ja lausekkeen merkkijonona toisena argumentti:

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

Asetus value=None tekee selväksi, että solulla ei ole staattista arvoa — sen näytetty sisältö tulee kokonaan kaavasta. Antamalla ei‑None arvo kaavan rinnalla on sallittua, mutta epätavallista; useimmat taulukkolaskentaohjelmat näyttävät kaavan tuloksen ja ohittavat tallennetun arvon.


Kaavan asettaminen kautta .formula Ominaisuuden

Määritä suoraan cell.formula kun sinulla on jo solun viite tai kun haluat lisätä kaavan soluun, joka on aiemmin kirjoitettu arvolla:

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

Kaavan lukeminen takaisin

Kun olet kirjoittanut kaavasolun, käytä .formula hakemaan lausekkeen merkkijonon ja .value hakemaan mahdollisen staattisen arvon, joka on tallennettu sen rinnalle.

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)

Käytännössä, .value on None kaikille soluille, jotka on luotu käyttäen Cell(None, formula). Jos lataat olemassa olevan työkirjan, joka on aiemmin tallennettu lasketuilla arvoilla välimuistissa kaavojen rinnalla, .value voi palauttaa viimeisen välimuistissa olevan tuloksen — mutta tämä käyttäytyminen riippuu siitä, miten alkuperäinen sovellus tallensi tiedoston, ja sen tulisi ei olla luotettavana tuoreille laskelmille.

Erottamaan kaavasolu tavallisesta arvosolusta suoritusaikana:

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

Yleisiä Excel-kaavoja

Seuraavassa taulukossa on lueteltu usein käytetyt Excel-funktiot esimerkkikaavariveillä, jotka voit syöttää suoraan Aspose.Cells FOSS:iin.

TarkoitusKaavan merkkijonoHuomautuksia
Summaa alue=SUM(A1:A10)Summaa kaikki numeeriset arvot alueella
Alueen keskiarvo=AVERAGE(A1:A10)Ohittaa tyhjät solut
Suurin arvo=MAX(A1:A10)Palauttaa suurimman luvun
Pienin arvo=MIN(A1:A10)Palauttaa pienimmän luvun
Laske numeeriset solut=COUNT(A1:A10)Laskee solut, joissa on vain numeerisia arvoja
Laske ei-tyhjät solut=COUNTA(A1:A10)Laskee kaikki ei-tyhjät solut
Ehdollinen arvo=IF(A1>100,"High","Low")Kolmen argumentin muoto: testaus, tosi‑tulos, epätosi‑tulos
Pystysuora haku=VLOOKUP(D1,A1:B10,2,FALSE)Tarkka täsmäys (FALSE) suositeltu
Yhdistä merkkijonot=CONCATENATE(A1," ",B1)Tai käytä =A1&" "&B1
Pyöristä luku=ROUND(A1,2)Toinen argumentti on desimaalipaikat

Kaikkien kaava‑merkkijonojen täytyy alkaa =. Funktioiden nimet ovat kirjainkooltaan riippumattomia kohteessa Excel‑yhteensopivissa tiedostoissa, mutta perinteinen isoilla kirjaimilla kirjoitettu muoto on esitetty yllä varten luettavuuden.


Kokonainen esimerkki

Seuraava esimerkki luo viiden rivin numeerisen tietojoukon sarakkeessa A, kirjoittaa sitten SUM-, AVERAGE-, MAX- ja MIN-kaavat sarakkeeseen B ja tallentaa tuloksen XLSX-tiedostoon.

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

Kun tämä tiedosto avataan Excelissä tai LibreOffice Calcissa, sarake C näyttää:

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

Huomautuksia

Kaavamerkkijonojen on alettava =

Kirjasto tallentaa merkkijonon sellaisenaan. Alkuperäisen = aiheuttaa taulukkolukijan käsittelemään tekstin kirjaimellisena merkkijonona eikä kaavana.

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

Alueviitteet käyttävät standardia Excel A1 -merkintää

Rivi-sarake-alueet kirjoitetaan muodossa FirstCell:LastCell käyttäen isoja sarake kirjaimia ja yhdenpohjaisia rivinumeroita: "A1:A10", "B2:D5", "C3:C3". FOSS kirjasto ei käännä tai tarkista alueen merkkijonoa — virheellinen alue tulee tallentua sellaisenaan ja aiheuttaa virheen taulukkolukijassa avausvaiheessa.

Kaavat tallennetaan merkkijonoina, eikä niitä arvioida

Aspose.Cells FOSS does not include a formula engine. If you need the computed kaavan tulos Python:ssa (esimerkiksi jatkolaskentaa varten), laske arvo itse ja kirjoita se staattisena arvona käyttäen .value. Käytä kaavat vain, kun loppukäyttäjä avaa tiedoston taulukkolaskentaohjelmassa joka pystyy arvioimaan ne.

Katso myös

 Suomi