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ł
| Cel | Cią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
- Referencja API: Pełna dokumentacja klas i metod dla
aspose.cells_foss - Baza wiedzy: Przewodniki jak‑to zorientowane na zadania
- Przegląd produktu: Podsumowanie funkcji i możliwości
- Rozpoczęcie / Instalacja: pip install i konfiguracja
- Blog: Wprowadzenie Aspose.Cells FOSS: Przegląd biblioteki i szybki start