Работа с клетки

Преглед

Всяка работна листа разкрива 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}")

Вижте още

 Български