Работа с клетки
Преглед
Всяка работна листа предоставя cells колекция, която съпоставя низове с адреси в Excel-стил (например "A1", "B3") към Cell обекти. Достъпвате клетка директно чрез индекс:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Access a cell by address
cell = ws.cells["A1"]Стойностите, формулите и информацията за стила всички се съхраняват в Cell обекта. Можете да промените клетка на място, като пишете в нейната .value или .formula свойство, или заменете клетката изцяло, като зададете нова Cell инстанция към адреса.
Четене и записване на стойности
Присвояване на cell.value за записване на низ, цяло число или число с плаваща запетая. Прочетете същото свойство обратно, за да извлечете каквото е било съхранено.
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")Това .value property приема всяка Python скаларна стойност. Библиотеката съхранява Python тип както е; няма имплицитно преобразуване по време на запис.
Използване на конструктора Cell
Това Cell constructor ви позволява да създадете клетка със стойност (и по желание formula) в едно изразяване. Присвоете получения Cell object към address subscript, за да го поставите в листа.
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")Първият позиционен аргумент към Cell е стойността. Когато предадете None това клетката се съхранява без стойност, което е полезно, когато възнамерявате да зададете формула отделно или искате изрично празна клетка, вместо липсваща.
Клетки с формули
Клетка с формула съхранява низ с израз, съвместим с Excel, заедно (или вместо) статична стойност. Има два начина да създадете такава.
Чрез конструктора Cell — предайте None като стойност и низът на формулата като втори аргумент:
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")Чрез .formula свойство — задайте свойството на съществуваща клетка:
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")Бърз справочник за често използвани формули
| Цел | Формулен низ |
|---|---|
| Сумиране на диапазон | =SUM(A1:A10) |
| Средно аритметично на диапазон | =AVERAGE(A1:A10) |
| Максимална стойност | =MAX(A1:A10) |
| Минимална стойност | =MIN(A1:A10) |
| Брой непразни | =COUNT(A1:A10) |
| Условна стойност | =IF(A1>0,"Positive","Non-positive") |
| Търсене на стойност | =VLOOKUP(D1,A1:B10,2,FALSE) |
| Конкатениране на низове | =CONCATENATE(A1," ",B1) |
Формулните низове трябва да започват с =. Библиотеката ги съхранява буквално; Excel (или съвместим четец) оценява израза, когато файлът се отвори.
Итериране върху данни
Използвайте стандартен Python цикъл, за да попълните колона или ред от списък:
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")Шаблонът enumerate(iterable, start=N) шаблонът се съпоставя чисто с номерата на редовете в Excel защото редовете в Excel са 1-базирани. Започвайки от start=2 запазва ред 1 за заглавка.
Смесени типове стойности
Следният пълен пример създава малък набор от данни с текстов ред за заглавие, три реда с данни, съдържащи цели числа, числа с плаваща запетая и низове, и ред с формула, който обобщава числовите колони.
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")След отваряне на файла в Excel (или в каквото и да е съвместимо приложение за електронни таблици), Колоната D колона и B5 / D5 клетките ще показват изчислените резултати на формулните изрази.
Съвети
None стойност срещу празен низ
Cell(None) и ws.cells["A1"].value = None създайте клетка без съхранена стойност — неразличима от клетка, която никога не е била записана в повечето електронни таблици четеци. Cell("") или ws.cells["A1"].value = "" създайте клетка, която изрично съдържа празен низ, който някои четци и формули третират по различен начин (например, =COUNT игнорира клетките с празен низ по същия начин, по който игнорира празните клетки, но =COUNTA ги брои).
Формулен низ срещу статична стойност
Четене .value от формулна клетка връща None (или последната кеширана стойност, ако една беше зададена преди формулата да бъде присвоена). Четене .formula връща низ на израза. Ако трябва да разграничите между клетка с формула и клетка с проста‑стойност по време на изпълнение, проверете дали ws.cells["A1"].formula е непразна:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula: {cell.formula}")
else:
print(f"Value: {cell.value}")Вижте също
- API справка: Пълна документация за класове и методи за
aspose.cells_foss - База от знания: Ръководства, ориентирани към задачи
- Преглед на продукта: Обобщение на функциите и възможностите
- Първи стъпки / Инсталиране: pip install и настройка
- Блог: Представяне на Aspose.Cells FOSS: Преглед на библиотеката и бърз старт