Práce s buňkami

Přehled

Každý list vystavuje kolekci cells, která mapuje řetězce adres ve stylu Excelu (například "A1", "B3") na objekty Cell. Buňku přistupujete přímo pomocí indexu:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Access a cell by address
cell = ws.cells["A1"]

Hodnoty, vzorce a informace o stylu jsou všechny uloženy v objektu Cell. Můžete buď změnit buňku na místě zápisem do její vlastnosti .value nebo .formula, nebo buňku zcela nahradit přiřazením nové instance Cell na adresu.


Čtení a zápis hodnot

Přiřaďte cell.value pro zápis řetězce, celého čísla nebo desetinného čísla. Přečtěte stejnou vlastnost zpět a získejte, co bylo uloženo.

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

##Write a string
ws.cells["A1"].value = "Hello, world"

##Write an integer
ws.cells["A2"].value = 42

##Write a float
ws.cells["A3"].value = 3.14159

##Read values back
print(ws.cells["A1"].value)   # Hello, world
print(ws.cells["A2"].value)   # 42
print(ws.cells["A3"].value)   # 3.14159

workbook.save("values_demo.xlsx")

Vlastnost .value přijímá libovolný skalár Pythonu. Knihovna ukládá typ Pythonu tak, jak je; při zápisu nedochází k žádné implicitní konverzi.


Používání Cell Constructor

Konstruktor Cell vám umožňuje vytvořit buňku s hodnotou (a volitelně i vzorcem) v jednom výrazu.
Přiřaďte vzniklý objekt Cell k podskriptu adresy, abyste jej umístili do listu.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Integer cell
ws.cells["A1"] = Cell(42)

##String cell
ws.cells["A2"] = Cell("Revenue")

##Float cell
ws.cells["A3"] = Cell(3.14)

##Explicitly empty cell (no value, no formula)
ws.cells["A4"] = Cell(None)

workbook.save("cell_constructor_demo.xlsx")

Prvním pozičním argumentem pro Cell je hodnota. Když předáte None
buňka se uloží bez hodnoty, což je užitečné, pokud chcete nastavit vzorec samostatně nebo chcete výslovně prázdnou buňku místo chybějící.


Buňky s formulí

Buňka s formulí ukládá řetězec výrazu kompatibilní s Excelem vedle (nebo místo) statické hodnoty. Existují dva způsoby, jak ji vytvořit.

Pomocí konstruktoru Cell — předávejte None jako hodnotu a řetězec vzorce jako druhý argument:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(20)
ws.cells["A3"] = Cell(30)

##Formula via constructor: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")

workbook.save("formula_constructor.xlsx")

Pomocí vlastnosti .formula — nastavte vlastnost na existující buňce:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

for i, v in enumerate([5, 10, 15, 20, 25], start=1):
    ws.cells[f"A{i}"].value = v

ws.cells["B1"].formula = "=AVERAGE(A1:A5)"

workbook.save("formula_property.xlsx")

Rychlý přehled běžných vzorců

ÚčelŘetězec vzorce
Součet rozsahu=SUM(A1:A10)
Průměr rozsahu=AVERAGE(A1:A10)
Maximální hodnota=MAX(A1:A10)
Minimální hodnota=MIN(A1:A10)
Počet ne‑prázdných=COUNT(A1:A10)
Podmíněná hodnota=IF(A1>0,"Positive","Non-positive")
Vyhledat hodnotu=VLOOKUP(D1,A1:B10,2,FALSE)
Spojit řetězce=CONCATENATE(A1," ",B1)

Řetězce vzorců musí začínat =. Knihovna je ukládá doslovně; Excel (nebo kompatibilní čtečka) vyhodnotí výraz při otevření souboru.


Iterování nad daty

Použijte standardní smyčku v Pythonu k naplnění sloupce nebo řádku ze seznamu:

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

monthly_sales = [12_500, 14_200, 9_800, 17_600, 21_100, 18_400]

##Write a header
ws.cells["A1"].value = "Monthly Sales"

##Write data starting at row 2 (index 1 → address A2)
for i, val in enumerate(monthly_sales, start=2):
    ws.cells[f"A{i}"].value = val

##Write a SUM formula below the data
last_row = 1 + len(monthly_sales)  # row index of last data cell
ws.cells[f"A{last_row + 1}"].formula = f"=SUM(A2:A{last_row})"

workbook.save("monthly_sales.xlsx")

Vzor enumerate(iterable, start=N) se čistě mapuje na čísla řádků v Excelu
protože řádky v Excelu jsou číslovány od 1. Začátek na start=2 vyhrazuje řádek 1 pro
záhlaví.


Smíšené typy hodnot

Následující kompletní příklad vytvoří malý dataset s textovým řádkem záhlaví, třemi řádky dat obsahujícími celá čísla, desetinná čísla a řetězce a řádkem s vzorcem, který shrnuje číselné sloupce.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Header row ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Units Sold"
ws.cells["C1"].value = "Unit Price"
ws.cells["D1"].value = "Revenue"

##--- Data rows ---
##Row 2
ws.cells["A2"] = Cell("Widget A")
ws.cells["B2"] = Cell(120)
ws.cells["C2"] = Cell(9.99)
ws.cells["D2"] = Cell(None, "=B2*C2")

##Row 3
ws.cells["A3"] = Cell("Widget B")
ws.cells["B3"] = Cell(85)
ws.cells["C3"] = Cell(14.50)
ws.cells["D3"] = Cell(None, "=B3*C3")

##Row 4
ws.cells["A4"] = Cell("Widget C")
ws.cells["B4"] = Cell(200)
ws.cells["C4"] = Cell(4.75)
ws.cells["D4"] = Cell(None, "=B4*C4")

##--- Summary row ---
ws.cells["A5"].value = "TOTAL"
ws.cells["B5"] = Cell(None, "=SUM(B2:B4)")
ws.cells["D5"] = Cell(None, "=SUM(D2:D4)")

workbook.save("mixed_types_dataset.xlsx")
print("Saved mixed_types_dataset.xlsx")

Po otevření souboru v Excelu (nebo v jakékoli kompatibilní tabulkové aplikaci) se ve sloupci D a buňkách B5 / D5 zobrazí vyhodnocené výsledky výrazů vzorců.


Tipy

None hodnota vs prázdný řetězec

Cell(None) a ws.cells["A1"].value = None vytvoří buňku bez uložené hodnoty — nerozeznatelnou od buňky, která nikdy nebyla zapsána, ve většině čteček tabulek. Cell("") nebo ws.cells["A1"].value = "" vytvoří buňku, která explicitně obsahuje prázdný řetězec, což některé čtečky a vzorce zpracovávají odlišně (například =COUNT ignoruje buňky s prázdným řetězcem stejným způsobem, jako ignoruje prázdné buňky, ale =COUNTA je počítá).

Řetězec vzorce vs statická hodnota

Čtení .value z buňky s formulí vrací None (nebo poslední uloženou hodnotu, pokud
byla nastavena před přiřazením formule). Čtení .formula vrací řetězec
výrazu. Pokud potřebujete během běhu rozlišovat mezi buňkou s formulí a
buňkou s prostou hodnotou, zkontrolujte, zda ws.cells["A1"].formula není prázdný:

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

Viz také

 Čeština