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ósito | Cadena 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
- Referencia de API: Documentación completa de clases y métodos para
aspose.cells_foss - Base de conocimientos: Guías prácticas orientadas a tareas
- Descripción del producto: Resumen de características y capacidades
- Comenzar / Instalación: pip install y configuración
- Blog: Presentando Aspose.Cells FOSS: Visión general de la biblioteca y comienzo rápido