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:
- Solun konstruktori –
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaominaisuus â–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.
| Tarkoitus | Kaavan merkkijono | Huomautuksia |
|---|---|---|
| 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ää:
| Rivi | Kaava | Odotettu 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
- API-viite: Täydellinen luokka- ja metodidokumentaatio kohteelle
aspose.cells_foss - Tietopankki: Tehtäväkeskeiset ohjeet
- Tuotteen yleiskatsaus: Ominaisuuksien ja kykyjen yhteenveto
- Aloitus / Asennus: pip install ja käyttöönotto
- Blogi: Esittelyssä Aspose.Cells FOSS: Kirjaston yleiskatsaus ja pika-aloitus