Работа с ячейками
Обзор
Каждый лист предоставляет 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
Эта 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 значение vs пустая строка
Cell(None) и ws.cells["A1"].value = None создать ячейку без сохранённого значения — неотличимое от ячейки, в которую никогда не записывали, в большинстве электронных таблиц читатели. Cell("") или ws.cells["A1"].value = "" создайте ячейку, которая явно содержит пустую строку, которую некоторые считыватели и формулы обрабатывают иначе (например, =COUNT игнорирует ячейки с пустой строкой так же, как игнорирует пустые ячейки, но =COUNTA считает их).
Строка формулы vs статическое значение
Чтение .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: Обзор библиотеки и быстрый старт