Rad sa 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 da postavite formulu u ćeliju:

  1. Konstruktor ćelije — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula svojstvo — ws.cells["A4"].formula = "=SUM(A1:A3)"

Oba pristupa čuvaju iste podatke. Forma konstruktora je kompaktna kada pravite list od nule; forma svojstva je prirodnija kada već imate referencu na postojeću ćeliju i želite da joj pridružite formulu.


Postavljanje formule putem Cell konstruktora

The Cell potpis konstruktora je Cell(value, formula). Da biste kreirali čistu formula ćeliju, prosledite None kao vrednost i string izraza 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")

Podešavanje value=None čini eksplicitnim da ćelija nema statičku vrednost — njen prikazani sadržaj dolazi u potpunosti iz formule. Prosleđivanje ne-None vrednost pored formule je dozvoljeno, ali neobično; većina čitača tabela će prikazati rezultat formule i ignorisati pohranjenu vrednost.


Postavljanje formule putem .formula Svojstvo

Dodeli direktno cell.formula kada već imate referencu na ćeliju ili kada želite da dodate formulu u ćeliju koja je prethodno bila popunjena vrednošć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 nazad

Nakon što ste napisali formulu u ćeliji, koristite .formula da biste dobili string izraza i .value da biste dohvatili bilo koju statičku vrednost (ako postoji) koja je bila sačuvana 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 kreiranu sa Cell(None, formula). Ako učitate postojeći radni list koji je prethodno sačuvan sa izračunatim vrednostima keširane uz formule, .value može vratiti poslednji keširani rezultat — ali ovo ponašanje zavisi od toga kako je izvorna aplikacija sačuvala fajl i treba ne treba se oslanjati na nove proračune.

Da biste u runtime-u razlikovali ćeliju sa formulom od ćelije sa običnom vrednošću:

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

Uobičajene Excel formule

Sledeća tabela navodi često korišćene Excel funkcije sa primerima formula koje možete proslediti direktno Aspose.Cells FOSS.

SvrhaNiz formuleNapomene
Saberi opseg=SUM(A1:A10)Sabira sve numeričke vrednosti u opsegu
Prosek opsega=AVERAGE(A1:A10)Ignoriše prazne ćelije
Maksimalna vrednost=MAX(A1:A10)Vraća najveći broj
Minimalna vrednost=MIN(A1:A10)Vraća najmanji broj
Broj numeričkih ćelija=COUNT(A1:A10)Broji ćelije koje sadrže samo numeričke vrednosti
Broj ne-praznih ćelija=COUNTA(A1:A10)Broji bilo koju ne-praznu ćeliju
Uslovna vrednost=IF(A1>100,"High","Low")Troargumentna forma: test, rezultat‑ako‑istinit, rezultat‑ako‑lažan
Vertikalno pretraživanje=VLOOKUP(D1,A1:B10,2,FALSE)Tačno podudaranje (FALSE) preporučeno
Konkateniraj stringove=CONCATENATE(A1," ",B1)Ili upotrebite =A1&" "&B1
Zaokruži broj=ROUND(A1,2)Drugi argument je broj decimala

Svi nizovi formula moraju početi sa =. Imena funkcija nisu osetljiva na veličinu slova u Excel‑kompatibilnim fajlovima, ali konvencionalni oblik velikim slovima je prikazan iznad za čitljivost.


Kompletan primer

Sledeći primer kreira skup podataka od pet redova numeričkih vrednosti u koloni A, zatim upisuje formule SUM, AVERAGE, MAX i MIN u kolonu B i čuva rezultat u XLSX fajl.

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 ovaj fajl otvori u Excelu ili LibreOffice Calc‑u, kolona C će prikazati:

RedFormulaOč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 sa =

Biblioteka čuva string tačno onako kako je. Izostavljanje početnog = prouzrokuje čitač proračunskih tablica da tretira tekst kao literalni string, 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 opsega koriste standardnu Excel A1 notaciju

Rasponi red‑kolona se pišu kao FirstCell:LastCell koristeći velika slova kolona slova i redove numerisane od 1: "A1:A10", "B2:D5", "C3:C3". FOSS biblioteka ne prevodi niti validira string raspona — nevažeći raspon će bude sačuvan doslovno i izazove grešku u čitaču tabela prilikom otvaranja.

Formule se čuvaju kao stringovi, a ne izračunavaju

Aspose.Cells FOSS does not include a formula engine. If you need the computed rezultat formule u Python (na primer, za izvođenje daljih proračuna), izračunajte vrednost sami i upišite je kao statičku vrednost uz .value. Koristite formule samo kada krajnji korisnik otvori fajl u aplikaciji za tabele koja može da ih izračuna.

Vidi takođe

 Српски