Darbs ar formulām

Pārskats

Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally — it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.

Ir divi veidi, kā ievietot formulu šūnā:

  1. Šūnas konstruktor — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula īpašība — ws.cells["A4"].formula = "=SUM(A1:A3)"

Abas pieejas saglabā vienus un tos pašus datus. Konstruktorforma ir kompakta, ja veidojat darblapu no jauna; īpašības forma ir dabiskāka, ja jau jums ir atsauce uz esošu šūnu un vēlaties pievienot tai formulu.


Formulas iestatīšana caur Cell konstruktoru

Šis Cell konstruktora paraksts ir Cell(value, formula). Lai izveidotu tīru formulas šūnu, nodod None kā vērtību un izteiksmes virkni kā otro argumentu:

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

Iestatījums value=None padara skaidru, ka šūna nav statiskas vērtības — tās parādītā saturs nāk pilnīgi no formulas. Pārsūtot ne-None vērtību blakus formulai ir atļauts, bet neparasti; vairums izklājlapu lasītāju parādīs formulas rezultātu un ignorēt saglabāto vērtību.


Formulas iestatīšana caur .formula Īpašība

Piešķirt tieši uz cell.formula kad jau jums ir šūnas atsauce vai kad jūs vēlaties pievienot formulu šūnai, kas iepriekš tika ierakstīta ar vērtību:

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

Formulas nolasīšana atpakaļ

Pēc formulas šūnas ierakstīšanas, izmantojiet .formula lai izgūtu izteiksmes virkni un .value lai izgūtu jebkuru statisko vērtību (ja tāda ir), kas tika saglabāta kopā ar to.

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)

Praksē, .value ir None jebkuram šūnai, kas izveidota ar Cell(None, formula). Ja ielādējat esošu darblapu, kas iepriekš tika saglabāta ar aprēķinātām vērtībām kešots kopā ar formulām, .value var atgriezt pēdējo kešēto rezultātu — bet šis uzvedība ir atkarīga no tā, kā izcelsmes lietojumprogramma saglabāja failu, un vajadzētu nevar paļauties uz svaigiem aprēķiniem.

Lai izpildes laikā atšķirtu formulas šūnu no vienkāršas vērtības šūnas:

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

Bieži izmantotās Excel formulas

Šajā tabulā ir uzskaitītas bieži izmantotās Excel funkcijas ar piemēru formulas virkņu, kuras varat nodot tieši Aspose.Cells FOSS.

MērķisFormulas virknePiezīmes
Saskaitīt diapazonu=SUM(A1:A10)Pievieno visas skaitliskās vērtības diapazonā
Diapazona vidējais=AVERAGE(A1:A10)Ignorē tukšas šūnas
Maksimālā vērtība=MAX(A1:A10)Atgriež lielāko skaitli
Minimuma vērtība=MIN(A1:A10)Atgriež mazāko skaitli
Skaitīt skaitliskās šūnas=COUNT(A1:A10)Skaita tikai šūnas ar skaitliskām vērtībām
Skaitīt ne‑tukšas šūnas=COUNTA(A1:A10)Skaita jebkuru ne‑tukšu šūnu
Nosacījuma vērtība=IF(A1>100,"High","Low")Trīsargumentu forma: tests, patiesais rezultāts, nepatiesais rezultāts
Vertikāla meklēšana=VLOOKUP(D1,A1:B10,2,FALSE)Precīza atbilstība (FALSE) ieteikts
Apvienot virknes=CONCATENATE(A1," ",B1)Vai izmantot =A1&" "&B1
Noapaļot skaitli=ROUND(A1,2)Otrs arguments ir decimālpunkta skaits

Visām formulas virknēm jābūt sākumā ar =. Funkciju nosaukumi nav reģistrjutīgi Excel‑savietojami faili, bet parastā lielo burtu forma ir parādīta iepriekš priekš lasāmības.


Pilns piemērs

Šis piemērs izveido piecu rindu datu kopu ar skaitliskām vērtībām kolonnā A, pēc tam ieraksta SUM, AVERAGE, MAX un MIN formulas kolonnā B un saglabā rezultātu XLSX failā.

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

Kad šis fails tiek atvērts programmā Excel vai LibreOffice Calc, kolonna C parādīs:

RindaFormulaSagaidāmais rezultāts
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Piezīmes

Formulas virknes jāuzsāk ar =

Bibliotēka saglabā virkni tādu, kāda tā ir. Izlaides sākuma = izraisa tabullapas lasītājam uzskatīt tekstu par burtisku virkni, nevis par formulu.

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

Apgabala atsauces izmanto standarta Excel A1 notāciju.

Rindas‑kolonnas diapazoni tiek pierakstīti kā FirstCell:LastCell izmantojot lielos burtus kolonnas burtus un vienas bāzes rindas numurus: "A1:A10", "B2:D5", "C3:C3". FOSS bibliotēka neiztulko vai nevalidē diapazona virkni — nederīgs diapazons tiks saglabāts burtiski un izraisīs kļūdu tabullapas lasītājā atvēršanas brīdī.

Formulas tiek saglabātas kā virknes, nevis novērtētas

Aspose.Cells FOSS does not include a formula engine. If you need the computed formulas rezultāts Python (piemēram, lai veiktu papildu aprēķinus), aprēķiniet vērtību pašrocīgi un ierakstiet to kā statisku vērtību, izmantojot .value. Izmantojiet formulas tikai tad, ja galalietotājs atvērs failu izklājlapas lietotnē kas var tās novērtēt.

Skatiet arī

 Latviešu