使用 Cells

概述

每个工作表都公开一个 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")

常用公式快速参考

PurposeFormula string
对范围求和=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 会对其计数)。

公式字符串 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}")

另请参见

 中文