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ā:
- Šūnas konstruktor —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .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ķis | Formulas virkne | Piezī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:
| Rinda | Formula | Sagaidā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ī
- API atsauce: Pilna klases un metodes dokumentācija priekš
aspose.cells_foss - Zināšanu bāze: Uzdevumu orientētas pamācības
- Produkta pārskats: Īss funkciju un iespēju pārskats
- Sākums / Instalēšana: pip instalēšana un iestatīšana
- Blogs: Iepazīstinām ar Aspose.Cells FOSS: Bibliotēkas pārskats un ātrais sākums