Trabajando con celdas

Descripción general

Cada hoja de cálculo expone una colección cells que asigna cadenas de direcciones al estilo de Excel (como "A1", "B3") a objetos Cell. Accedes a una celda directamente mediante subíndice:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Access a cell by address
cell = ws.cells["A1"]

Los valores, fórmulas e información de estilo residen en el objeto Cell. Puedes mutar una celda en su lugar escribiendo en su propiedad .value o .formula, o reemplazar la celda completamente asignando una nueva instancia Cell a la dirección.


Lectura y escritura de valores

Asignar a cell.value para escribir una cadena, entero o flotante. Leer la misma propiedad de vuelta para recuperar lo que se haya almacenado.

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")

La propiedad .value acepta cualquier escalar de Python. La biblioteca almacena el tipo de Python tal cual; no ocurre conversión implícita en el momento de escritura.


Usando el Constructor de Celdas

El constructor Cell le permite crear una celda con un valor (y opcionalmente una
fórmula) en una sola expresión. Asigne el objeto Cell resultante al subíndice de dirección para colocarlo en la hoja.

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")

El primer argumento posicional de Cell es el valor.
Cuando pasas None la celda se almacena sin valor, lo cual es útil cuando pretendes establecer una fórmula por separado o deseas una celda explícitamente en blanco en lugar de una ausente.


Celdas de fórmula

Una celda de fórmula almacena una cadena de expresión compatible con Excel junto a (o en lugar de) un valor estático. Hay dos formas de crear una.

A través del constructor Cell — pase None como el valor y la cadena de fórmula como segundo argumento:

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")

A través de la propiedad .formula — establezca la propiedad en una celda existente:

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")

Referencia rápida de fórmulas comunes

PropósitoCadena de fórmula
Sumar un rango=SUM(A1:A10)
Promedio de un rango=AVERAGE(A1:A10)
Valor máximo=MAX(A1:A10)
Valor mínimo=MIN(A1:A10)
Contar no vacíos=COUNT(A1:A10)
Valor condicional=IF(A1>0,"Positive","Non-positive")
Buscar un valor=VLOOKUP(D1,A1:B10,2,FALSE)
Concatenar cadenas=CONCATENATE(A1," ",B1)

Las cadenas de fórmula deben comenzar con =. La biblioteca las almacena literalmente; Excel (o un lector compatible) evalúa la expresión cuando se abre el archivo.


Iterando sobre datos

Utiliza un bucle estándar de Python para rellenar una columna o fila a partir de una lista:

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")

El patrón enumerate(iterable, start=N) se asigna limpiamente a los números de fila de Excel porque las filas de Excel son de base 1. Comenzar en start=2 reserva la fila 1 para un encabezado.


Tipos de valor mixtos

El siguiente ejemplo completo crea un pequeño conjunto de datos con una fila de encabezado de texto,
tres filas de datos que contienen enteros, flotantes y cadenas, y una fila de fórmula
que resume las columnas numéricas.

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")

Después de abrir el archivo en Excel (o cualquier aplicación de hoja de cálculo compatible), la columna D y las celdas B5 / D5 mostrarán los resultados evaluados de las expresiones de fórmula.


Consejos

None valor vs cadena vacía

Cell(None) y ws.cells["A1"].value = None crean una celda sin valor almacenado — indistinguible de una celda que nunca se escribió en la mayoría de los lectores de hojas de cálculo. Cell("") o ws.cells["A1"].value = "" crean una celda que contiene explícitamente una cadena vacía, que algunos lectores y fórmulas tratan de manera diferente (por ejemplo, =COUNT ignora las celdas de cadena vacía de la misma forma que ignora las celdas en blanco, pero =COUNTA las cuenta).

Cadena de fórmula vs valor estático

Leer .value de una celda de fórmula devuelve None (o el último valor almacenado en caché si se estableció antes de asignar la fórmula). Leer .formula devuelve la cadena de expresión. Si necesita distinguir entre una celda de fórmula y una celda de valor simple en tiempo de ejecución, verifique si ws.cells["A1"].formula no está vacío:

cell = ws.cells["A1"]
if cell.formula:
    print(f"Formula: {cell.formula}")
else:
    print(f"Value: {cell.value}")

Ver también

 Español