Darbas su formulėmis
Apžvalga
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.
Yra du būdai įdėti formulę į langelį:
- Ląstelės konstruktorius —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulasavybė —ws.cells["A4"].formula = "=SUM(A1:A3)"
Abu metodai saugo tuos pačius duomenis. Konstruktoriaus forma yra kompaktiška, kai kuriate lapą nuo nulio; savybės forma yra natūralesnė, kai jau turite nuorodą į esamą langelį ir norite jam pridėti formulę.
Formulės nustatymas per Cell konstruktorių
Šis Cell konstruktoriaus parašas yra Cell(value, formula). Norint sukurti gryną formulės langelį, perduokite None kaip reikšmę ir išraiškos eilutę kaip antrąją 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")Nustatymas value=None padaro aiškų, kad langelis neturi statinės reikšmės — jo rodomas turinys visiškai gaunamas iš formulės. Perduodant ne-None reikšmė kartu su formule leidžiama, bet neįprasta; dauguma skaičiuoklių skaityklių rodys formulės rezultatą ir ignoruos saugomą reikšmę.
Formulės nustatymas per .formula Savybę
Priskirkite tiesiogiai cell.formula kai jau turite langelio nuorodą arba kai norite pridėti formulę į langelį, kuris anksčiau buvo užrašytas su reikšme:
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")Formulės skaitymas atgal
Po formulės įvedimo į langelį, naudokite .formula norėdami gauti išraiškos eilutę ir .value norėdami gauti bet kokią statinę reikšmę (jei yra), kuri buvo saugoma kartu su ja.
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)Praktikoje, .value yra None bet kuriam langeliui, sukurtam su Cell(None, formula). Jei įkeliate esamą darbaknygę, kuri anksčiau buvo išsaugota su apskaičiuotomis reikšmėmis kaupiamos kartu su formulėmis, .value gali grąžinti paskutinį kaupiamą rezultatą — bet tai elgesys priklauso nuo to, kaip kilusi programa išsaugojo failą, ir turėtų nebūti patikimas šviežiam skaičiavimui.
Norint vykdymo metu atskirti formulės langelį nuo paprasto reikšmės langelio:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")Bendros Excel formulės
Žemiau pateikta lentelė išvardija dažniausiai naudojamas Excel funkcijas su pavyzdiniais formulės eilutėmis, kurias galite tiesiogiai perduoti Aspose.Cells FOSS.
| Tikslas | Formulės eilutė | Pastabos |
|---|---|---|
| Suma diapazonui | =SUM(A1:A10) | Prideda visas skaitines reikšmes diapazone |
| Diapazono vidurkis | =AVERAGE(A1:A10) | Ignoruojamos tuščios ląstelės |
| Maksimali reikšmė | =MAX(A1:A10) | Grąžina didžiausią skaičių |
| Mažiausia reikšmė | =MIN(A1:A10) | Grąžina mažiausią skaičių |
| Skaičiuoti skaitinius langelius | =COUNT(A1:A10) | Skaičiuoja tik skaitines reikšmes turinčius langelius |
| Skaičiuoti ne tuščius langelius | =COUNTA(A1:A10) | Skaičiuoja bet kurį ne tuščią langelį |
| Sąlyginė reikšmė | =IF(A1>100,"High","Low") | Trijų argumentų forma: testas, teisingas rezultatas, klaidingas rezultatas |
| Vertikalus paieškos | =VLOOKUP(D1,A1:B10,2,FALSE) | Tikslus atitikmuo (FALSE) rekomenduojama |
| Sujungti eilutes | =CONCATENATE(A1," ",B1) | Arba naudokite =A1&" "&B1 |
| Suapvalinti skaičių | =ROUND(A1,2) | Antras argumentas – dešimtainiai skaitmenys |
Visos formulės eilutės turi prasidėti =. Funkcijų pavadinimai yra ne jautrūs raidžių dydžiui Excel suderinamuose failuose, tačiau įprasta didžiųjų raidžių forma parodyta aukščiau dėl skaitomumo.
Pilnas pavyzdys
Žemiau pateiktas pavyzdys sukuria penkių eilučių duomenų rinkinį su skaitiniais reikšmėmis stulpelyje A, tada įrašo SUM, AVERAGE, MAX ir MIN formules į stulpelį B ir išsaugo rezultatą į XLSX failą.
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")Kai šis failas atveriamas Excel arba LibreOffice Calc, stulpelyje C bus rodomas:
| Eilutė | Formulė | Tikėtinas rezultatas |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
Pastabos
Formulės eilutės turi prasidėti =
Biblioteka saugo eilutę tokia, kokia ji yra. Praleidžiant pradžios = sukelia skaičiuoklės skaitytui tekstą interpretuoti kaip tiesioginę eilutę, o ne formulę.
##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)"Diapazonų nuorodos naudoja standartinę Excel A1 notaciją
Eilutės-stulpelio intervalai rašomi kaip FirstCell:LastCell naudojant didžiąsias stulpelio raides ir vienu pagrindu skaičiuojamus eilutės numerius: "A1:A10", "B2:D5", "C3:C3". FOSS biblioteka nevertina ir nepatikrina intervalo eilutės — neteisingas intervalas bus saugomas nepakitęs ir sukels klaidą skaičiuoklės skaitytuve atidarant failą.
Formulės saugomos kaip eilutės, nevertinamos.
Aspose.Cells FOSS does not include a formula engine. If you need the computed formulės rezultatas Python (pavyzdžiui, atlikti tolesnius skaičiavimus), apskaičiuokite reikšmę patys ir įrašykite ją kaip statinę reikšmę su .value. Naudokite formules tik tada, kai galutinis naudotojas atvers failą skaičiuoklių programoje kurios gali jas įvertinti.
Taip pat žiūrėkite
- API nuoroda: Pilna klasės ir metodų dokumentacija
aspose.cells_foss - Žinių bazė: Užduotimis orientuoti praktiniai vadovai
- Produkto apžvalga: Savybių ir galimybių santrauka
- Pradžia / Įdiegimas: pip install ir nustatymas
- Tinklaraštis: Pristatome Aspose.Cells FOSS: Bibliotekos apžvalga ir greitas pradžia