Képletekkel dolgozás

Áttekintés

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.

Két módja van a képlet cellába helyezésének:

  1. Cell konstruktor — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula tulajdonság — ws.cells["A4"].formula = "=SUM(A1:A3)"

Mindkét megközelítés ugyanazt az adatot tárolja. A konstruktoros forma tömör, ha egy lapot a semmiből épít; a tulajdonságos forma természetesebb, ha már van hivatkozásod egy meglévő cellára, és képletet szeretnél hozzáadni.


Képlet beállítása a Cell konstruktoron keresztül

A Cell a konstruktor aláírása Cell(value, formula). Egy tiszta képletcellát, adja meg None értékként, és a kifejezés karakterláncot második argumentumként:

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

Beállítás value=None explicit módon jelzi, hogy a cellának nincs statikus értéke — a megjelenített tartalma teljesen a képlettől származik. NemNone érték egy képlettel együtt engedélyezett, de szokatlan; a legtöbb táblázatolvasó megjeleníti a képlet eredményét, és figyelmen kívül hagyja a tárolt értéket.


Képlet beállítása a .formula Tulajdonság

Közvetlenül hozzárendel cell.formula ha már van cellahivatkozásod vagy amikor egy cellához szeretnél képletet hozzáadni, amely korábban értékkel volt kitöltve:

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

Képlet visszaolvasása

Képletcellát írás után használd .formula a kifejezés karakterláncának lekéréséhez és .value a mellette tárolt statikus érték (ha van) lekéréséhez.

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)

Gyakorlatban, .value az None bármely cellához, amelyet a következővel hoztak létre Cell(None, formula). Ha betöltesz egy meglévő munkafüzetet, amelyet korábban számított értékekkel mentettek el a képletekkel együtt gyorsítótárazott, .value visszaadhatja az utolsó gyorsítótárazott eredményt — de ez a viselkedés attól függ, hogy a kiinduló alkalmazás hogyan mentette a fájlt, és nem megbízható friss számításokhoz.

A képletcellát a normál értékcellától futásidőben megkülönböztetni:

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

Gyakori Excel képletek

Az alábbi táblázat felsorolja a gyakran használt Excel függvényeket példaként megadott képletsorokkal, amelyeket közvetlenül átadhatsz a Aspose.Cells FOSS-nak.

CélKéplet karakterláncMegjegyzések
Tartomány összeadása=SUM(A1:A10)Összeadja a tartományban lévő összes numerikus értéket
A tartomány átlaga=AVERAGE(A1:A10)Figyelmen kívül hagyja az üres cellákat
Legnagyobb érték=MAX(A1:A10)Visszaadja a legnagyobb számot
Legkisebb érték=MIN(A1:A10)Visszaadja a legkisebb számot
Számolja meg a numerikus cellákat=COUNT(A1:A10)Csak numerikus értékű cellákat számol
Nem üres cellákat számol=COUNTA(A1:A10)Minden nem üres cellát számol
Feltételes érték=IF(A1>100,"High","Low")Három argumentumos forma: teszt, igaz-eredmény, hamis-eredmény
Függőleges keresés=VLOOKUP(D1,A1:B10,2,FALSE)Pontos egyezés (FALSE) ajánlott
Karakterláncok összefűzése=CONCATENATE(A1," ",B1)Vagy használja =A1&" "&B1
Szám kerekítése=ROUND(A1,2)A második argumentum a tizedesjegyek száma

Minden képletkarakterláncnak a következővel kell kezdődnie =. A függvénynevek nem kis- és nagybetű érzékenyek a Excel-kompatibilis fájlokban, de a hagyományos nagybetűs forma fentebb van feltüntetve a az olvashatóság érdekében.


Teljes példa

Az alábbi példa egy öt soros numerikus adatkészletet hoz létre az A oszlopban, majd a SUM, AVERAGE, MAX és MIN képleteket írja a B oszlopba, és elmenti az eredményt egy XLSX fájlba.

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

Amikor ezt a fájlt megnyitják Excelben vagy a LibreOffice Calc-ban, a C oszlop a következőt jeleníti meg:

SorKépletVárható eredmény
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Megjegyzések

A képletsoroknak a következővel kell kezdődniük =

A könyvtár a karakterláncot változatlanul tárolja. A vezető elhagyása = okozza, hogy a táblázatolvasó a szöveget szó szerinti karakterláncként kezelje a képlet helyett.

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

A tartományhivatkozások a szabványos Excel A1 jelölést használják

A sor-oszlop tartományok a következőképpen íródnak: FirstCell:LastCell nagybetűs oszlop betűkkel és egytől induló sor számokkal: "A1:A10", "B2:D5", "C3:C3". A FOSS könyvtár nem fordítja le vagy ellenőrzi a tartomány karakterláncot — egy érvénytelen tartomány szó szerint lesz tárolva, és hibát okoz a táblázatolvasóban a megnyitáskor.

A képletek karakterláncként tárolódnak, nem kerülnek kiértékelésre

Aspose.Cells FOSS does not include a formula engine. If you need the computed a Python képlet eredménye (például további számítások elvégzéséhez), számítsd ki az értéket saját magad, és írd be statikus értékként a következővel .value. Használd képletek csak akkor, ha a végfelhasználó a fájlt táblázatkezelő alkalmazásban nyitja meg amely képes kiértékelni őket.

Lásd még

 Magyar