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é
- API Reference: Úplná dokumentace tříd a metod pro
aspose.cells_foss - Knowledge Base: Průvodci zaměřené na úkoly
- Product Overview: Shrnutí funkcí a schopností
- Getting Started / Installation: pip install a nastavení
- Blog: Introducing Aspose.Cells FOSS: Přehled knihovny a rychlý start