Praca z komórkami

Przegląd

Każdy arkusz udostępnia cells kolekcję, która mapuje ciągi adresów w stylu Excel (takie jak "A1", "B3") na Cell obiekty. Dostęp do komórki uzyskujesz bezpośrednio przez indeksowanie:

from aspose.cells_foss import Workbook, Cell

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

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

Wszystkie wartości, formuły i informacje o stylu znajdują się w Cell obiekcie. Możesz albo zmienić komórkę w miejscu, zapisując do jej .value lub .formula właściwości, albo całkowicie zastąpić komórkę, przypisując nową Cell instancję do adresu.


Odczytywanie i zapisywanie wartości

Przypisz do cell.value aby zapisać ciąg znaków, liczbę całkowitą lub zmiennoprzecinkową. Odczytaj to samo właściwość z powrotem, aby pobrać to, co zostało zapisane.

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 właściwość akceptuje dowolny skalar Python. Biblioteka przechowuje typ Python bez zmian; nie zachodzi żadna domyślna konwersja w czasie zapisu.


Używanie konstruktora Cell

Ten Cell konstruktor pozwala utworzyć komórkę z wartością (i opcjonalnie formułą) w jednym wyrażeniu. Przypisz wynikowy Cell obiekt do adres podindeksu, aby umieścić go w arkuszu.

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

Pierwszy argument pozycyjny do Cell to jest wartość. Gdy przekazujesz None to komórka jest przechowywana bez wartości, co jest przydatne, gdy zamierzasz ustawić formułę oddzielnie lub chcesz wyraźnie pustą komórkę zamiast nieobecnej.


Komórki z formułami

Komórka z formułą przechowuje ciąg wyrażenia zgodnego z Excelem obok (lub zamiast) stałej wartości. Istnieją dwa sposoby jej utworzenia.

Za pomocą konstruktora Cell — przekaż None jako wartość i ciąg formuły jako drugi 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")

Za pomocą .formula właściwość — ustaw właściwość w istniejącej komórce:

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

Szybkie odniesienie do popularnych formuł

CelCiąg formuły
Sumuj zakres=SUM(A1:A10)
Średnia z zakresu=AVERAGE(A1:A10)
Maksymalna wartość=MAX(A1:A10)
Minimalna wartość=MIN(A1:A10)
Policz niepuste=COUNT(A1:A10)
Wartość warunkowa=IF(A1>0,"Positive","Non-positive")
Wyszukaj wartość=VLOOKUP(D1,A1:B10,2,FALSE)
Łączyć ciągi=CONCATENATE(A1," ",B1)

Ciągi formuł muszą zaczynać się od =. Biblioteka przechowuje je dosłownie; Excel (lub kompatybilny czytnik) ocenia wyrażenie, gdy plik zostaje otwarty.


Iterowanie danych

Użyj standardowej pętli Python, aby wypełnić kolumnę lub wiersz z listy:

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

Ten enumerate(iterable, start=N) wzorzec odwzorowuje się bezpośrednio na numery wierszy Excela ponieważ wiersze Excela są numerowane od 1. Rozpoczynając od start=2 rezerwuje wiersz 1 dla nagłówka.


Mieszane typy wartości

Poniższy kompletny przykład tworzy mały zestaw danych z wierszem nagłówka tekstowego, trzema wierszami danych zawierającymi liczby całkowite, liczby zmiennoprzecinkowe i ciągi znaków oraz wierszem formuły podsumowującym kolumny liczbowe.

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 otwarciu pliku w Excelu (lub w dowolnej kompatybilnej aplikacji arkusza kalkulacyjnego), to D kolumna i B5 / D5 komórki wyświetlą wyliczone wyniki wyrażeń formuł.


Wskazówki

None wartość vs pusty ciąg

Cell(None) i ws.cells["A1"].value = None utwórz komórkę bez zapisanego wartość — nieodróżnialna od komórki, która nigdy nie została zapisana w większości arkuszy kalkulacyjnych czytników. Cell("") lub ws.cells["A1"].value = "" utwórz komórkę, która wyraźnie zawiera pusty ciąg, który niektórzy czytniki i formuły traktują inaczej (na przykład, =COUNT ignoruje komórki z pustym ciągiem znaków tak samo, jak ignoruje puste komórki, ale =COUNTA liczy je).

Ciąg formuły vs wartość statyczna

Odczyt .value z komórki formuły zwraca None (lub ostatnią zapisaną wartość, jeśli została ustawiona przed przypisaniem formuły). Odczyt .formula zwraca ciąg wyrażenia. Jeśli potrzebujesz odróżnić komórkę formuły od komórki z wartością zwykłą w czasie wykonywania, sprawdź, czy ws.cells["A1"].formula nie jest pusty:

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

Zobacz także

 Polski