Treballant amb fórmules
Visió general
Aspose.Cells FOSS emmagatzema les fórmules com a cadenes compatibles amb Excel. La biblioteca no avalua les fórmules internament — conserva l’expressió literalment al fitxer, i l’aplicació de fulls de càlcul (Excel, LibreOffice Calc o qualsevol lector compatible) calcula el resultat quan s’obre el fitxer.
Hi ha dues maneres de col·locar una fórmula en una cel·la:
- Constructor de cel·la —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulapropietat —ws.cells["A4"].formula = "=SUM(A1:A3)"
Tots dos enfocaments emmagatzemen les mateixes dades. La forma del constructor és compacta quan estàs creant una fulla des de zero; la forma de propietat és més natural quan ja tens una referència a una cel·la existent i vols adjuntar-hi una fórmula.
Configuració d’una fórmula mitjançant el constructor de cel·les
La signatura del constructor Cell és Cell(value, formula). Per crear una cel·la de fórmula pura,
passa None com a valor i la cadena d’expressió com a segon argument:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)
##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")Establir value=None fa explícit que la cel·la no té cap valor estàtic — el seu contingut mostrat prové completament de la fórmula. Passar un valor no-None juntament amb una fórmula està permès però inusual; la majoria de lectors de fulls de càlcul mostraran el resultat de la fórmula i ignoraran el valor emmagatzemat.
Configuració d’una fórmula mitjançant la propietat .formula
Assigna directament a cell.formula quan ja disposes d’una referència de cel·la o quan
vols afegir una fórmula a una cel·la que prèviament s’havia escrit amb un valor:
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
ws.cells[f"A{i}"].value = val
##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"
##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"
workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")Lectura d’una fórmula cap enrere
Després d’escriure una cel·la de fórmula, utilitzeu .formula per recuperar la cadena d’expressió i .value per recuperar qualsevol valor estàtic (si n’hi ha) que s’hagi emmagatzemat al seu costat.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")
cell = ws.cells["A1"]
print(cell.formula) # =SUM(B1:B5)
print(cell.value) # None (no static value was set)En la pràctica, .value és None per a qualsevol cel·la creada amb Cell(None, formula).
Si carregues un llibre de treball existent que s’havia desat prèviament amb valors calculats
emmagatzemats en caché juntament amb les fórmules, .value pot retornar l’últim resultat emmagatzemat en caché — però aquest
el comportament depèn de com l’aplicació d’origen ha desat el fitxer i hauria de
no confiar-hi per a càlculs nous.
Per distingir una cel·la de fórmula d’una cel·la de valor simple en temps d’execució:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")Fórmules d’Excel comunes
La taula següent llista les funcions d’Excel d’ús freqüent amb cadenes de fórmules d’exemple que podeu passar directament a Aspose.Cells FOSS.
| Propòsit | Formula string | Notes |
|---|---|---|
| Suma d’un interval | =SUM(A1:A10) | Afegeix tots els valors numèrics de l’interval |
| Mitjana d’un interval | =AVERAGE(A1:A10) | Ignora les cel·les buides |
| Valor màxim | =MAX(A1:A10) | Retorna el nombre més gran |
| Valor mínim | =MIN(A1:A10) | Retorna el nombre més petit |
| Compta cel·les numèriques | =COUNT(A1:A10) | Compta només les cel·les amb valors numèrics |
| Compta cel·les no buides | =COUNTA(A1:A10) | Compta qualsevol cel·la no buida |
| Valor condicional | =IF(A1>100,"High","Low") | Forma de tres arguments: prova, resultat-verdader, resultat-fals |
| Cerca vertical | =VLOOKUP(D1,A1:B10,2,FALSE) | Coincidència exacta (FALSE) recomanada |
| Concatenar cadenes | =CONCATENATE(A1," ",B1) | O utilitza =A1&" "&B1 |
| Arrodonir un nombre | =ROUND(A1,2) | El segon argument són les posicions decimals |
Totes les cadenes de fórmula han de començar amb =. Els noms de funció no distingeixen majúscules de minúscules en
fitxers compatibles amb Excel, però la forma convencional en majúscules es mostra a dalt per a la llegibilitat.
Exemple complet
L’exemple següent crea un conjunt de dades de cinc files amb valors numèrics a la columna A, després escriu les fórmules SUM, AVERAGE, MAX i MIN a la columna B, i desa el resultat en un fitxer XLSX.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"
##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
ws.cells[f"A{i}"].value = val
##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"
##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")
##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")Quan aquest fitxer s’obre a Excel o LibreOffice Calc, la columna C mostrarà:
| Fila | Fórmula | Resultat esperat |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
Notes
Les cadenes de fórmula han de començar amb =
La biblioteca emmagatzema la cadena tal com està. Ometre el prefix = fa que el lector de fulls de càlcul tracti el text com una cadena literal en lloc d’una fórmula.
##Correct — starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"
##Wrong — treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"Les referències d’interval utilitzen la notació estàndard d’Excel A1
Les àrees de fila i columna s’escriuen com FirstCell:LastCell utilitzant lletres majúscules de columna
i números de fila basats en 1: "A1:A10", "B2:D5", "C3:C3". La biblioteca FOSS
no tradueix ni valida la cadena de rang — un rang invàlid
s’emmagatzemarà literalment i provocarà un error al lector de fulls de càlcul en obrir-lo.
Les fórmules s’emmagatzemen com a cadenes, no s’avaluen
Aspose.Cells FOSS no inclou un motor de fórmules. Si necessiteu el resultat
calculat d’una fórmula en Python (per exemple, per realitzar càlculs addicionals),
calculeu el valor vosaltres mateixos i escriviu-lo com a valor estàtic amb .value. Utilitzeu
fórmules només quan l’usuari final obrirà el fitxer en una aplicació de full de càlcul
que pugui avaluar‑les.
Vegeu també
- Referència de l’API: Documentació completa de classes i mètodes per a
aspose.cells_foss - Base de coneixement: Guies pràctiques orientades a tasques
- Visió general del producte: Resum de característiques i capacitats
- Començar / Instal·lació: pip install i configuració
- Blog: Presentant Aspose.Cells FOSS: Visió general de la biblioteca i inici ràpid