Работа с клетки
Преглед
Всяка работна листа разкрива 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 приема всякакъв Python скалар. Библиотеката съхранява
Python типа както е; няма имплицитно преобразуване по време на запис.
Използване на Cell Constructor
Конструкторът Cell ви позволява да създадете клетка със стойност (и по желание
формула) в едно изразяване. Присвоете получения обект Cell на индекса на адреса, за да го поставите в листа.
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 Reference: Пълна документация за класове и методи за
aspose.cells_foss - Knowledge Base: Ръководства за задачи
- Product Overview: Обобщение на функциите и възможностите
- Getting Started / Installation: pip install и настройка
- Blog: Introducing Aspose.Cells FOSS: Преглед на библиотеката и бърз старт