Práce s vzorci
Přehled
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.
Existují dva způsoby umístění vzorce do buňky:
- Konstruktor buněk - Ne, ne.
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulamajetek - Ne, ne.ws.cells["A4"].formula = "=SUM(A1:A3)"
Oba přístupy ukládají stejné údaje. Konstruktor je kompaktní, když vytváříte list od nuly; vlastnost formulář je přirozenější, pokud již máte odkaz na existující buňku a chcete připojit vzorec k ní.
Nastavení vzorce pomocí konstruktoru buněk
Úřad pro bezpečnost a ochranu zdraví Cell podpis konstruktoru je: Cell(value, formula).- Vytvořit čisté … vzorová buňka, projít None jako hodnota a výraz řetězec 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 je to explicitní, že buňka nemá žádnou statickou hodnotu - jeho Zpráva o tom, že se v rámci tohoto programu provádí výzva k tomu, aby bylo možné přezkoumat všechny informace.None hodnota vedle vzorce je povoleno, ale neobvyklé; většina čteček tabulky zobrazí výsledek vzorce a ignorovat uloženou hodnotu.
Nastavení vzorce prostřednictvím .formula Vlastnictví
Přidělit přímo na: cell.formula když už máte odkaz na buňku nebo kdy chcete do buňky přidat vzorec, který byl dříve napsán 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í vzoru zpět
Po zapsání buňky vzorce použijte: .formula získat řetěz výrazů a) .value získat jakoukoliv statickou hodnotu (pokud existuje) uloženou 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 se jedná o:, .value je: None pro každou buňku vytvořenou s: Cell(None, formula). Pokud načteš existující pracovní kniha, která byla dříve uložena s vypočtenými hodnotami ukládá se v cache vedle vzorců, .value může vrátit poslední ukradený výsledek, ale toto: Chování závisí na tom, jak původní aplikace uložila soubor a měla by být nesmí být použita pro nové výpočty.
Pro rozlišení buňky vzorce od bujníku s prostou hodnotou při běhu:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")Obvyklé vzorce programu Excel
Následující tabulka uvádí běžně používané funkce programu Excel s příkladem řetězců vzorů, které můžete přenést přímo do položky Aspose.Cells FOSS.
| Účel: | Číslo vzorce | Poznámky |
|---|---|---|
| Součet rozmezí | =SUM(A1:A10) | Přidává všechny číselné hodnoty v rozsahu |
| Průměr rozmezí | =AVERAGE(A1:A10) | Nezahrnuje prázdné buňky |
| Maximální hodnota | =MAX(A1:A10) | Vrátí největší číslo. |
| Minimální hodnota | =MIN(A1:A10) | Vrátí nejmenší číslo. |
| Počítání číselných buněk | =COUNT(A1:A10) | Počítá buňky pouze s číselnými hodnotami |
| Počítání neprázdných buněk | =COUNTA(A1:A10) | Počítá všechny neprázdné buňky. |
| Podmínková hodnota | =IF(A1>100,"High","Low") | Tři argumenty: test, správný výsledek, nesprávný. |
| Vertikální vyhledávání | =VLOOKUP(D1,A1:B10,2,FALSE) | Přesný soulad (FALSE) doporučují: |
| Konkatenované řetězce | =CONCATENATE(A1," ",B1) | Nebo použít =A1&" "&B1 |
| Ohromné číslo. | =ROUND(A1,2) | Druhá arg je desátka. |
Všechny řetězce vzorců musí začít s: =.Jména funkcí jsou v písmenech bez citlivosti na velké a malé písmena . Soubory kompatibilní s Excelem, ale obvyklá forma velkými písmeny je uvedená výše pro: čitelnost.
Kompletní příklad
Následující příklad vytváří pětiradový soubor dat číselných hodnot ve sloupci A, poté zapíše vzory SUMM, AVERAGE, MAX a MIN do sloupu B a ukládá 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, ve sloupci C se zobrazí:
| Řádek | Způsob použití: | Oč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
Režim formul musí začít na: =
Knihovna ukládá řetězec tak, jak je. = způsobuje: čtečka tabulky, která zachází s textem spíše jako se slovním řetězcem než jako s vzorcem.
##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 rozmezí používají standardní Excel A1 notování
Rozmezí řádků a sloupců se píše jako: FirstCell:LastCell s použitím velkých písmen ve sloupci písmena a čísla řádků na jedné bázi: "A1:A10", "B2:D5", "C3:C3".FOSS . knihovna nepřeloží nebo neověří řetězce rozmezí - neplatný rozsah bude být doslova uložené a způsobit chybu v čtečku tabulky při otevření.
Formulá se ukládají jako řetězce, ne vyhodnocují.
Aspose.Cells FOSS does not include a formula engine. If you need the computed výsledek vzorce v jazyce Python (např. pro provádění dalších výpočtů), Vypočítajte si hodnotu sami a napište ji jako statickou hodnotu s .value.Použijte . vzorce pouze tehdy, když koncový uživatel otevře soubor v aplikaci pro tabulky; které je mohou vyhodnotit.
Viz také:
- Odkaz na API: Úplná dokumentace třídy a metody pro:
aspose.cells_foss - Základní znalosti:Příručky pro provádění jednotlivých úkolů
- Přehled produktu: Souhrnnost vlastností a schopností
- Začínání / instalace: instalace a nastavení pip
- Blog: Představuji Aspose.Cells FOSS: Přehled knihovny a rychlý start