Rad s formulama
Pregled
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.
Postoje dva načina za postavljanje formule u ćeliju:
- Konstruktor ćelije —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulasvojstvo —ws.cells["A4"].formula = "=SUM(A1:A3)"
Oba pristupa pohranjuju iste podatke. Forma konstruktora je sažeta kada gradite tablicu od nule; forma svojstva je prirodnija kada već imate referencu na postojeću ćeliju i želite joj dodati formulu.
Postavljanje formule putem Cell konstruktora
Potpis Cell konstruktora je Cell(value, formula). Da biste stvorili čistu formulu ćeliju, proslijedite None kao vrijednost i izrazni niz kao drugi 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")Postavljanje value=None čini eksplicitnim da ćelija nema statičku vrijednost — njezin prikazani sadržaj dolazi u potpunosti iz formule. Prosljeđivanje ne-None vrijednost uz formulu je dopušteno, ali neobično; većina čitača proračunskih tablica će prikazati rezultat formule i zanemariti pohranjenu vrijednost.
Postavljanje formule putem .formula Svojstvo
Izravno dodijeli cell.formula kada već imate referencu na ćeliju ili kada želite dodati formulu u ćeliju koja je prethodno upisana s vrijednošću:
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")Čitanje formule natrag
Nakon upisivanja ćelije s formulom, upotrijebite .formula za dohvaćanje niza izraza i .value za dohvaćanje bilo koje statičke vrijednosti (ako postoji) koja je pohranjena uz nju.
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)U praksi, .value je None za svaku ćeliju stvorenu s Cell(None, formula). Ako učitate postojeći radni list koji je prethodno spremljen s izračunatim vrijednostima keširanim uz formule, .value može vratiti posljednji keširani rezultat — ali ovo ponašanje ovisi o tome kako je izvorna aplikacija spremila datoteku i treba se ne smije oslanjati za svježe izračune.
Za razlikovanje ćelije s formulom od ćelije s običnom vrijednošću u vrijeme izvođenja:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")Uobičajene Excel formule
Sljedeća tablica navodi često korištene Excel funkcije s primjerima formula koje možete izravno proslijediti Aspose.Cells FOSS.
| Svrha | Niz formule | Napomene |
|---|---|---|
| Zbroj raspona | =SUM(A1:A10) | Zbraja sve numeričke vrijednosti u rasponu |
| Prosjek raspona | =AVERAGE(A1:A10) | Zanemaruje prazne ćelije |
| Maksimalna vrijednost | =MAX(A1:A10) | Vraća najveći broj |
| Minimalna vrijednost | =MIN(A1:A10) | Vraća najmanji broj |
| Broj numeričkih ćelija | =COUNT(A1:A10) | Broji samo ćelije s numeričkim vrijednostima |
| Broj ne‑praznih ćelija | =COUNTA(A1:A10) | Broji svaku ne‑praznu ćeliju |
| Uvjetna vrijednost | =IF(A1>100,"High","Low") | Oblik s tri argumenta: test, rezultat‑ako‑istina, rezultat‑ako‑laž |
| Vertikalno pretraživanje | =VLOOKUP(D1,A1:B10,2,FALSE) | Točno podudaranje (FALSE) preporučeno |
| Spoji nizove | =CONCATENATE(A1," ",B1) | Ili upotrijebi =A1&" "&B1 |
| Zaokruži broj | =ROUND(A1,2) | Drugi argument je broj decimala |
Svi nizovi formula moraju početi s =. Imena funkcija nisu osjetljiva na veličinu slova u Excel-kompatibilnim datotekama, ali konvencionalni oblik velikih slova prikazan je iznad za čitljivost.
Potpun primjer
Sljedeći primjer stvara skup podataka od pet redaka s numeričkim vrijednostima u stupcu A, zatim zapisuje formule SUM, AVERAGE, MAX i MIN u stupac B i sprema rezultat u XLSX datoteku.
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")Kada se ova datoteka otvori u Excelu ili LibreOffice Calc-u, stupac C će prikazati:
| Redak | Formula | Očekivani rezultat |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
Napomene
Nizovi formula moraju početi s =
Biblioteka pohranjuje niz takav kakav jest. Izostavljanje početnog = uzrokuje da čitač proračunske tablice tretira tekst kao doslovni niz, a ne kao formulu.
##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)"Reference na raspon koriste standardnu Excel A1 notaciju
Rasponi redak-stupac zapisani su kao FirstCell:LastCell koristeći velika slova za stupce i slova te brojeve redaka koji počinju od 1: "A1:A10", "B2:D5", "C3:C3". FOSS biblioteka ne prevodi niti provjerava niz raspona — neispravan raspon će biti pohranjen doslovno i uzrokovati grešku u čitaču proračunske tablice prilikom otvaranja.
Formule se pohranjuju kao nizovi, a ne izračunavaju
Aspose.Cells FOSS does not include a formula engine. If you need the computed rezultat formule u Python (na primjer, za izvođenje dodatnih izračuna), izračunajte vrijednost sami i zapišite je kao statičku vrijednost pomoću .value. Upotrijebite formule samo kada krajnji korisnik otvori datoteku u aplikaciji za proračunske tablice koja ih može izračunati.
Vidi također
- API referenca: Potpuna dokumentacija klasa i metoda za
aspose.cells_foss - Baza znanja: Vodiči usmjereni na zadatke
- Pregled proizvoda: Sažetak značajki i mogućnosti
- Početak / Instalacija: pip install i postavljanje
- Blog: Predstavljanje Aspose.Cells FOSS: Pregled biblioteke i brzi početak