Práce s vzorci

Přehled

Aspose.Cells FOSS ukládá vzorce jako řetězce kompatibilní s Excelem.
Knihovna nevyhodnocuje
vzorce interně — zachovává výraz doslovně v
souboru a tabulková aplikace (Excel, LibreOffice Calc nebo jakýkoli kompatibilní
čtečka) vypočítá výsledek při otevření souboru.

Existují dva způsoby, jak vložit vzorec do buňky:

  1. Konstruktor buňkyws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula vlastnostws.cells["A4"].formula = "=SUM(A1:A3)"

Oba přístupy ukládají stejná data. Forma konstruktoru je kompaktní, když vytváříte list od nuly; forma vlastnosti je přirozenější, když již máte odkaz na existující buňku a chcete k ní připojit vzorec.


Nastavení vzorce pomocí konstruktoru buňky

Podpis konstruktoru Cell je Cell(value, formula). Pro vytvoření čisté
buňky s formulí předejte None jako hodnotu a řetězec výrazu jako druhý
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")

Nastavení value=None explicitně uvádí, že buňka nemá statickou hodnotu — její zobrazovaný obsah pochází výhradně ze vzorce. Předání ne-None hodnoty spolu se vzorcem je povoleno, ale neobvyklé; většina čteček tabulek zobrazí výsledek vzorce a ignoruje uloženou hodnotu.


Nastavení vzorce pomocí vlastnosti .formula Property

Přiřaďte přímo do cell.formula, pokud již máte odkaz na buňku nebo pokud chcete přidat vzorec do buňky, která byla dříve zapsána s hodnotou:

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

Čtení vzorce zpět

Po zápisu buňky s formulí použijte .formula k získání řetězce výrazu a .value k získání jakékoli statické hodnoty (pokud existuje), která byla uložena vedle ní.

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)

V praxi je .value None pro každou buňku vytvořenou pomocí Cell(None, formula).
Pokud načtete existující sešit, který byl dříve uložen s vypočtenými hodnotami
uloženými v mezipaměti spolu s formuláři, .value může vrátit poslední uložený výsledek — ale toto
chování závisí na tom, jak původní aplikace soubor uložila, a nemělo by se
spoléhat na čerstvé výpočty.

Pro rozlišení buňky s formulí od buňky s obyčejnou hodnotou za běhu:

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

Běžné vzorce v Excelu

Následující tabulka uvádí často používané funkce Excelu s ukázkovými řetězci vzorců, které můžete předat přímo do Aspose.Cells FOSS.

ÚčelFormula stringPoznámky
Sečíst oblast=SUM(A1:A10)Přidá všechny číselné hodnoty v oblasti
Průměr oblasti=AVERAGE(A1:A10)Ignoruje prázdné buňky
Maximální hodnota=MAX(A1:A10)Vrací největší číslo
Minimální hodnota=MIN(A1:A10)Vrací nejmenší číslo
Počítat číselné buňky=COUNT(A1:A10)Počítá pouze buňky s číselnými hodnotami
Počítat neprázdné buňky=COUNTA(A1:A10)Počítá jakoukoli neprázdnou buňku
Podmíněná hodnota=IF(A1>100,"High","Low")Tříargumentová forma: test, výsledek‑true, výsledek‑false
Vertikální vyhledávání=VLOOKUP(D1,A1:B10,2,FALSE)Doporučuje se přesná shoda (FALSE)
Spojit řetězce=CONCATENATE(A1," ",B1)Nebo použijte =A1&" "&B1
Zaokrouhlit číslo=ROUND(A1,2)Druhý argument je počet desetinných míst

Všechny řetězce vzorců musí začínat =. Názvy funkcí jsou v souborech kompatibilních s Excelem nezávislé na velikosti písmen, ale konvenční velká forma je uvedena výše pro čitelnost.


Kompletní příklad

Následující příklad vytvoří datovou sadu s pěti řádky číselných hodnot ve sloupci A, pak zapíše vzorce SUM, AVERAGE, MAX a MIN do sloupce B a uloží výsledek do souboru XLSX.

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

Když je tento soubor otevřen v Excelu nebo LibreOffice Calc, sloupec C zobrazí:

ŘádekVzorecOčekávaný výsledek
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Poznámky

Řetězce vzorců musí začínat =

Knihovna ukládá řetězec tak, jak je. Vynechání úvodního = způsobí, že čtečka tabulek bude text považovat za doslovný řetězec místo vzorce.

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

Rozsahy odkazů používají standardní notaci Excel A1

Rozsahy řádků a sloupců jsou zapisovány jako FirstCell:LastCell pomocí velkých písmen sloupců a čísel řádků počínajících od jedné: "A1:A10", "B2:D5", "C3:C3". Knihovna FOSS nepřekládá ani nevaliduje řetězec rozsahu — neplatný rozsah bude uložen doslovně a způsobí chybu v čtečce tabulek při otevření.

Vzorce jsou uloženy jako řetězce, nevyhodnocovány

Aspose.Cells FOSS neobsahuje výpočetní engine pro vzorce. Pokud potřebujete vypočtený
výsledek vzorce v Pythonu (například pro provedení dalších výpočtů),
vypočítejte hodnotu sami a zapište ji jako statickou hodnotu pomocí .value. Používejte
vzorce pouze tehdy, když koncový uživatel otevře soubor v tabulkové aplikaci,
která je dokáže vyhodnotit.

Viz také

 Čeština