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:
- Cell konstruktor —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulatulajdonsá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él | Képlet karakterlánc | Megjegyzé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:
| Sor | Képlet | Vá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
- API-referencia: Teljes osztály- és metódusdokumentáció a
aspose.cells_foss - Tudásbázis: Feladatorientált útmutatók
- Termékáttekintés: Funkciók és képességek összefoglalása
- Első lépések / Telepítés: pip install és beállítás
- Blog: A Aspose.Cells FOSS bemutatása: Könyvtár áttekintése és gyors kezdés