Práce s buňkami
Přehled
Každý list vystavuje cells kolekci, která mapuje řetězce adres ve stylu Excel (například "A1", "B3") na Cell objekty. Přistupujete k buňce 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 Cell objektu. Můžete buď změnit buňku na místě zápisem do její .value nebo .formula vlastnosti, nebo nahradit buňku úplně přiřazením nového Cell instance k adrese.
Čtení a zápis hodnot
Přiřaďte k cell.value pro zápis řetězce, celého čísla nebo desetinného čísla. Přečtěte stejnou vlastnost zpět pro získání toho, 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")Ten .value vlastnost přijímá libovolný skalár Python. Knihovna ukládá typ Python tak, jak je; žádná implicitní konverze se při zápisu neprovádí.
Použití konstruktoru Cell
Tento Cell konstruktor vám umožní vytvořit buňku s hodnotou (a volitelně vzorec) v jediném výrazu. Přiřaďte výsledný Cell objekt k adresní index, aby byl umístěn v 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í poziční argument pro Cell je hodnota. Když předáte None tento buňka je uložena bez hodnoty, což je užitečné, když chcete nastavit vzorec samostatně nebo chcete explicitně 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 takovou buňku vytvořit.
Pomocí konstruktoru Cell — předat 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í .formula vlastnosti — nastavit 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 |
|---|---|
| Sečíst oblast | =SUM(A1:A10) |
| Průměr oblasti | =AVERAGE(A1:A10) |
| Maximální hodnota | =MAX(A1:A10) |
| Minimální hodnota | =MIN(A1:A10) |
| Počítat neprázdné | =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.
Iterace přes data
Použijte standardní smyčku Python 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")The enumerate(iterable, start=N) vzorek se čistě mapuje na čísla řádků v Excelu protože řádky v Excelu jsou číslovány od 1. Začíná na start=2 vyhrazuje řádek 1 pro hlavičku.
Smíšené typy hodnot
Následující kompletní příklad vytvoří malý datový soubor s textovým řádkem záhlaví, třemi řádky dat obsahujícími celá čísla, desetinná čísla a řetězce a řádkem vzorce, 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), the D sloupec a B5 / D5 buňky zobrazí vyhodnocené výsledky vzorcových výrazů.
Tipy
None hodnota vs prázdný řetězec
Cell(None) a ws.cells["A1"].value = None vytvořte buňku bez uložené hodnoty — nerozeznatelná od buňky, která nebyla nikdy zapsána ve většině tabulek čtečů. Cell("") nebo ws.cells["A1"].value = "" vytvořte buňku, která explicitně obsahuje prázdný řetězec, který někteří čteči a vzorce zpracovávají odlišně (například, =COUNT ignoruje buňky s prázdným řetězcem stejným způsobem, jakým ignoruje prázdné buňky, ale =COUNTA počítá je).
Řetězec vzorce vs statická hodnota
Čtení .value z buňky s vzorcem vrací None (nebo poslední uloženou hodnotu, pokud byla nastavena před přiřazením vzorce). Čtení .formula vrací řetězec výrazu. Pokud potřebujete rozlišovat mezi buňkou s vzorcem a a buňka s prostou hodnotou během běhu, 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é
- Reference API: Úplná dokumentace tříd a metod pro
aspose.cells_foss - Znalostní báze: Úkolově orientované návody
- Přehled produktu: Shrnutí funkcí a schopností
- Začínáme / Instalace: pip install a nastavení
- Blog: Představení Aspose.Cells FOSS: Přehled knihovny a rychlý start