Diagram munkalap képletek alkalmazása prezentációkban Python használatával

Áttekintés

A PowerPoint diagramok általában beágyazott munkalapon tárolják a forrásadataikat. Az Aspose.Slides for Python via .NET segítségével elérheti ezt a munkalapot a diagram adatkönyvön keresztül, beírhat bemeneti értékeket, képleteket rendelhet cellákhoz, kiszámíthatja a támogatott képleteket, és a kiszámított cellákat diagram adatként használhatja.

Ez a cikk részletesen bemutatja a képlet-összes folyamatot: diagram létrehozása, a munkalap feltöltése, A1‑stílusú vagy R1C1‑stílusú képletek hozzárendelése, újraszámításuk, a kiszámított értékek olvasása, ezen cellák összekapcsolása diagram sorozattal, majd a prezentáció mentése. Emellett ismerteti a támogatott képletszintaxist, a beépített függvények részhalmazát, a gyorsítótárazott értékeket, a nem támogatott képleteket és a táblázatkezelő-specifikus hibákat.

Diagram munkalapok és képletek

A diagram munkalap tartalmazza a diagram által használt kategóriákat, sorozatneveket és értékeket. PowerPointban a munkalapot a diagram adat szerkesztőjének megnyitásával vizsgálhatja meg:

PowerPoint diagram beágyazott munkalappal megnyitva, a kategória és sorozat adataival

Az Aspose.Slidesben a munkalap a chart data workbook révén érhető el. Az A1‑stílusú képletekhez használja a formula tulajdonságot, a R1C1‑stílusú képletekhez a r1c1_formula tulajdonságot. A bemeneti cellák vagy képletek módosítása után hívja a calculate_formulas metódust a támogatott képletek újraszámításához és a megfelelő cellaértékek frissítéséhez.

Egy kiszámított cella továbbra is a value tulajdonságán keresztül adja vissza az eredményt. Ez fontos, ha a kódban szeretné ellenőrizni a képlet eredményét vagy a cellát diagram adatpontként használni.

Diagram létrehozása és munkalapi képletek számítása

Az alábbi példa egy vég‑től‑végig munkafolyamatot mutat be. Létrehoz egy csoportos oszlopdiagramot, törli a minta adatokat, beírja a negyedéves bevétel és kiadás értékeket, képletekkel számítja a profitot, kiolvassa az eredményeket, a kiszámított cellákat diagramértékekként használja, és elmenti a prezentációt.

import aspose.slides as slides
import aspose.slides.charts as charts

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 600, 350)
    workbook = chart.chart_data.chart_data_workbook
    worksheet_index = 0

    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()
    workbook.clear(worksheet_index)

    category1 = workbook.get_cell(worksheet_index, "A2", "Q1")
    category2 = workbook.get_cell(worksheet_index, "A3", "Q2")
    category3 = workbook.get_cell(worksheet_index, "A4", "Q3")

    workbook.get_cell(worksheet_index, "B1", "Revenue")
    workbook.get_cell(worksheet_index, "C1", "Expenses")
    workbook.get_cell(worksheet_index, "D1", "Profit")

    workbook.get_cell(worksheet_index, "B2").value = 120.0
    workbook.get_cell(worksheet_index, "C2").value = 80.0
    workbook.get_cell(worksheet_index, "B3").value = 150.0
    workbook.get_cell(worksheet_index, "C3").value = 95.0
    workbook.get_cell(worksheet_index, "B4").value = 135.0
    workbook.get_cell(worksheet_index, "C4").value = 110.0

    profit1 = workbook.get_cell(worksheet_index, "D2")
    profit2 = workbook.get_cell(worksheet_index, "D3")
    profit3 = workbook.get_cell(worksheet_index, "D4")

    profit1.formula = "B2-C2"
    profit2.formula = "B3-C3"
    profit3.formula = "B4-C4"

    workbook.calculate_formulas()

    q1_profit = profit1.value  # 40
    q2_profit = profit2.value  # 55
    q3_profit = profit3.value  # 25

    print(f"Q1 profit: {q1_profit}")
    print(f"Q2 profit: {q2_profit}")
    print(f"Q3 profit: {q3_profit}")

    chart.chart_data.categories.add(category1)
    chart.chart_data.categories.add(category2)
    chart.chart_data.categories.add(category3)

    profit_series = chart.chart_data.series.add(workbook.get_cell(worksheet_index, "D1"), chart.type)
    profit_series.data_points.add_data_point_for_bar_series(profit1)
    profit_series.data_points.add_data_point_for_bar_series(profit2)
    profit_series.data_points.add_data_point_for_bar_series(profit3)
    profit_series.labels.default_data_label_format.show_value = True

    presentation.save("chart-formulas.pptx", slides.export.SaveFormat.PPTX)

A diagram adatpontjai a D2:D4 tartományra hivatkoznak, így a diagram a kiszámított profit értékeket használja. Ebben a munkafolyamatban nincs külön diagram‑frissítő hívás: először számolja újra a munkakönyvet, majd használja vagy mentse a diagram adatot, amely a kiszámított cellákra mutat.

A1‑stílusú képletek használata

Az A1 jelölés oszlopokat betűkkel, sorokat számokkal azonosít. A A1‑stílusú kifejezéseket a IChartDataCell.formula segítségével adhatja meg.

import aspose.slides as slides
import aspose.slides.charts as charts

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 300)
    workbook = chart.chart_data.chart_data_workbook

    workbook.get_cell(0, "C3").value = 10
    workbook.get_cell(0, "F2").value = 2
    workbook.get_cell(0, "G2").value = 3
    workbook.get_cell(0, "H2").value = 4

    cell = workbook.get_cell(0, "A2")
    cell.formula = "C3+SUM(F2:H2)"

    workbook.calculate_formulas()

    value = cell.value  # 19

A gyakori A1 hivatkozási formák:

Hivatkozás Relatív Abszolút Vegyes
Cell A2 $A$2 A$2, $A2
Row 2:2 $2:$2
Column A:A $A:$A
Range A2:C4 $A$2:$C$4 A$2:$C4, $A2:C$4

A relatív hivatkozások a képlet mozgatásakor vagy másolásakor változhatnak. Az abszolút hivatkozások mindkét koordinátát rögzítik, míg a vegyes hivatkozások csak egy sort vagy egy oszlopot rögzítenek.

R1C1‑stílusú képletek használata

Az R1C1 jelölés a sorokat és oszlopokat számmal azonosítja. A relatív hivatkozások szögletes zárójelben lévő eltolásokat használnak. Ezt a szintaxist a IChartDataCell.r1c1_formula segítségével adhatja meg.

import aspose.slides as slides
import aspose.slides.charts as charts

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 300)
    workbook = chart.chart_data.chart_data_workbook

    workbook.get_cell(0, "B2").value = 12
    workbook.get_cell(0, "C2").value = 5

    cell = workbook.get_cell(0, "D2")
    cell.r1c1_formula = "RC[-2]-RC[-1]"

    workbook.calculate_formulas()

    value = cell.value  # 7

A gyakori R1C1 hivatkozási formák:

Hivatkozás Relatív Abszolút Vegyes
Cell R[2]C[3] R2C3 R2C[3], R[2]C3
Row R[2] R2
Column C[3] C3
Range R[2]C[3]:R[5]C[7] R2C3:R5C7 R2C3:R[5]C[7], R[2]C3:R5C[7]

Például a D2 cellában az RC[-2] azt jelenti, hogy ugyanabban a sorban két oszloppal balra lévő cella (B2).

Képlet állandók és operátorok

A beépített képletértékelő támogatja a logikai értékeket, numerikus literálokat, szövegeket, táblázatkezelő hibákat, aritmetikai operátorokat és összehasonlító operátorokat.

Állandók és literálok

Típus Példák Megjegyzés
Logikai TRUE, FALSE Közvetlenül használható logikai kifejezésekben, például A2=TRUE.
Numerikus 1, 0.5, .3, 1E-2 A közönséges és a tudományos jelölés egyaránt támogatott.
Szöveg "abc", "2/3/2020 12:00" A szövegliterálok dupla idézőjelesek a képleten belül.
Hiba eredmény #DIV/0!, #N/A, #REF! Egy érvényes képlet kiértékelhető táblázatkezelő hibaértékre a normál eredmény helyett.

Ez a példa több állandó típust használ:

import aspose.slides as slides
import aspose.slides.charts as charts

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 300)
    workbook = chart.chart_data.chart_data_workbook

    workbook.get_cell(0, "A2").value = False
    workbook.get_cell(0, "B2").formula = "A2=TRUE"
    workbook.get_cell(0, "C2").formula = "1+0.5"
    workbook.get_cell(0, "D2").formula = ".3*1E-2"
    workbook.get_cell(0, "E2").formula = "\"abc\""
    workbook.get_cell(0, "F2").formula = "2/0"

    workbook.calculate_formulas()

    logical_value = workbook.get_cell(0, "B2").value  # Hamis
    numeric_value = workbook.get_cell(0, "C2").value  # 1.5
    scientific_value = workbook.get_cell(0, "D2").value  # 0.003
    string_value = workbook.get_cell(0, "E2").value  # abc
    error_value = workbook.get_cell(0, "F2").value  # #DIV/0!

Aritmetikai operátorok

Operátor Jelentés Példa
+ Összeadás vagy unáris plusz 2+3
- Kivonás vagy negatív 2-3, -3
* Szorzás 2*3
/ Osztás 2/3
% Százalék 30%
^ Hatványozás 2^3

Használjon zárójeleket a kiértékelési sorrend egyértelművé tételéhez, például (A2+B2)*C2.

Összehasonlító operátorok

Az összehasonlító kifejezések logikai értéket adnak vissza.

Operátor Jelentés Példa
= Egyenlő A2=3
<> Nem egyenlő A2<>3
> Nagyobb A2>3
>= Nagyobb vagy egyenlő A2>=3
< Kisebb A2<3
<= Kisebb vagy egyenlő A2<=3

Támogatott előre definiált függvények

Az Aspose.Slides beépített képletértékelővel rendelkezik diagram munkalapokhoz, de nem egy teljes Excel számítási motor. A dokumentált függvénykészlet a következőkre korlátozódik. Ne feltételezze, hogy tetszőleges Excel függvényt újra tud számolni a calculate_formulas metódus.

Függvény Leírás vagy támogatott forma Példa
ABS Abszolút érték ABS(A2)
AVERAGE Aritmetikai közép AVERAGE(B2:B5)
CEILING Felfelé kerekítés egy többszörösre CEILING(A2,5)
CHOOSE Érték kiválasztása index alapján CHOOSE(A2,"Low","High")
CONCAT Szövegek összefűzése CONCAT(A2,B2)
CONCATENATE Szövegek összefűzése CONCATENATE(A2," ",B2)
DATE Dátum érték létrehozása a 1900-as dátumrendszerrel DATE(2026,8,19)
DAYS Napok száma két dátum között DAYS(B2,A2)
FIND Egy szövegrészlet keresése egy másikban FIND("-",A2)
FINDB Byte‑orientált szövegkeresés FINDB("a",A2)
IF Feltételes eredmény IF(A2>0,A2,0)
INDEX Referencia forma INDEX(A2:C4,2,3)
LOOKUP Vektor forma LOOKUP(A2,B2:B5,C2:C5)
MATCH Vektor forma MATCH(A2,B2:B5,0)
MAX Maximum érték MAX(B2:B5)
SUM Összeg SUM(B2:B5)
VLOOKUP Függőleges keresés VLOOKUP(A2,B2:D10,3,FALSE)

A táblázatban feltüntetett korlátozások lényegesek: az INDEX referencia formában van dokumentálva, míg a LOOKUP és a MATCH vektor formában. A DATE a 1900‑as dátumrendszert használja. A listán kívüli funkciók és jellemzők a Aspose.Slides képletértékelő által nem támogatottként kezelendők, hacsak nincs külön dokumentációjuk.

Képletek számítása preferált kultúrával

Néhány munkakönyvi funkció a szöveget kultúra‑specifikus szabályok szerint értelmezi. Ez különösen fontos a dupla‑bájtos karakterkészletet (DBCS) használó nyelvek esetén. Az ilyen képletek helyes számításához hozzon létre egy LoadOptions objektumot, állítsa be a SpreadsheetOptions.preferred_culture értékét a LoadOptions.spreadsheet_options segítségével, majd töltse be a prezentációt.

Az alábbi példa a japán kultúrát választja, a konfigurált betöltési beállításokkal megnyit egy prezentációt, és a ChartDataWorkbook.calculate_formulas metódust hívja minden diagram munkakönyvre:

import aspose.slides as slides
import aspose.slides.charts as charts

load_options = slides.LoadOptions()
load_options.spreadsheet_options.preferred_culture = "ja-JP"

with slides.Presentation("presentation.pptx", load_options) as presentation:
    for slide in presentation.slides:
        for shape in slide.shapes:
            if isinstance(shape, charts.Chart):
                shape.chart_data.chart_data_workbook.calculate_formulas()

A preferált kultúra a prezentáció betöltési konfiguráció része, ezért a Presentation példány létrehozása előtt állítsa be. Használja azt a kultúrát, amelyet a munkakönyvi képletek elvárnak; például a japán DBCS szabályokhoz a ja-JP értéket kell megadni.

Újraszámítás és gyorsítótárazott értékek

A táblázatfájlok gyakran tárolják a képletet és az utolsó számított értékét is. Az Aspose.Slides ezért a IChartDataCell.value tulajdonságból olvas gyorsítótárazott értéket, ha a prezentáció betöltésekor a vonatkozó diagram adat nem változott.

A bemeneti cellák vagy képletek módosítása után ne bízzon meg egy régi gyorsítótárazott eredményben. Hívja a ChartDataWorkbook.calculate_formulas metódust a kiszámított értékek olvasása vagy a diagram adat mentése előtt, amely ezekre a cellákra támaszkodik.

A támogatott halmazon kívüli képletek esetén az Aspose.Slides előfordulhat, hogy nem tudja értelmezni a képletet vagy annak függőségeit. Ha a munkakönyv módosult, a korábbi gyorsítótárazott érték már nem tekinthető megbízhatónak. Ilyen helyzetben egy nem támogatott adatú cella értékének olvasása a CellUnsupportedDataException kivételt váltja ki.

Ha diagramja olyan Excel‑függvényeket használ, amelyeket az Aspose.Slides nem értékel ki, számolja ki ezeket a képleteket egy olyan táblázatkezelő motorral, amely támogatja őket, és írja vissza a kapott értékeket a diagram munkakönyvébe. Ne helyettesítse a nem támogatott képleteket találgatott értékekkel.

Képlet hibáinak kezelése

Két különböző problématípust kell megkülönböztetni.

Egy képlet lehet érvényes, de táblázatkezelő hibát eredményez, például #DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF! vagy #VALUE!. Ebben az esetben a hiba token a cella eredménye, és a value‑on keresztül visszakapcsolható.

Egy képlet a feldolgozás, hivatkozás, függőség vagy támogatott adat szintjén is hibát jelezhet. Az Aspose.Slides ezekre az esetekre táblázatkezelő‑specifikus kivételeket biztosít: CellInvalidFormulaException, CellInvalidReferenceException, CellCircularReferenceException és CellUnsupportedDataException.

Ha a képletek sablonokból vagy felhasználói bemenetből származnak, kezelje ezeket a kivételeket az újraszámítás és az érték elérése körül:

import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.slides.spreadsheet as spreadsheet

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 300)
    workbook = chart.chart_data.chart_data_workbook
    cell = workbook.get_cell(0, "A2")
    cell.formula = "SUM(B2:B5)"

    try:
        workbook.calculate_formulas()
        print(cell.value)
    except spreadsheet.CellInvalidFormulaException as ex:
        print(f"Invalid formula: {ex}")
    except spreadsheet.CellInvalidReferenceException as ex:
        print(f"Invalid cell reference: {ex}")
    except spreadsheet.CellCircularReferenceException as ex:
        print(f"Circular reference: {ex}")
    except spreadsheet.CellUnsupportedDataException as ex:
        print(f"Unsupported spreadsheet data: {ex}")

Gyakorlati korlátozások

A diagram munkalapok képletsupportja egy meghatározott részhalmazra vonatkozik, nem pedig a teljes Excel kompatibilitásra. Tartsa szem előtt ezeket a korlátokat a jelentéskészítési munkafolyamat tervezésekor:

  • Csak a dokumentált állandókat, operátorokat, hivatkozásokat és függvényeket használja, ha azt szeretné, hogy az Aspose.Slides újraszámolja a képleteket.
  • Újraszámítás a cellák módosítása után, amelyeken a képlet eredménye függ.
  • Tekintse a betöltött prezentációkból származó gyorsítótárazott értékeket pillanatfelvételeknek, ne pedig újraszámítás helyettesítőinek módosítások után.
  • Tesztelje a sablonokból származó képleteket, mielőtt a kiszámított értékekre támaszkodna, különösen, ha a dokumentált listán kívüli függvényeket tartalmaznak.
  • Azoknál a képleteknél, amelyek teljes táblázatkezelő számítási motorra támaszkodnak, számolja ki őket külsőleg, majd frissítse a diagram munkakönyvét a kapott értékekkel.

GYIK

Mi a különbség a formula és az r1c1_formula között?

formula A1‑stílusú kifejezést, például B2-C2 tárol. r1c1_formula R1C1‑stílusú kifejezést, például RC[-2]-RC[-1] tárol. A címzésnek leginkább azt válassza, amelyik a képletek generálásához vagy másolásához illeszkedik.

A számítás után a cellát vagy annak értékét kell olvasnom?

ChartDataWorkbook.get_cell egy IChartDataCell‑et ad vissza. A kiszámított eredményhez olvassa el ennek a cellának a value tulajdonságát az újraszámítás után.

Mikor kell meghívni a calculate_formulas‑t?

Hívja a calculate_formulas metódust a bemeneti értékek vagy képletek módosítása után, és még az előtt, hogy a kiszámított eredményeket felhasználná. Ez frissíti a beépített értékelő által támogatott képletek értékeit.

Támogatja az Aspose.Slides minden Excel‑függvényt?

Nem. A beépített értékelő csak egy dokumentált részhalmazt támogat. A részhalmazon kívüli függvények nem számolhatók újra. Ha teljes Excel képlet kompatibilitásra van szükség, végezze el a számítást egy megfelelő táblázatkezelő motorral, és írja be a végső értékeket a diagram munkakönyvébe.

Mi történik, ha egy betöltött prezentáció nem támogatott képletet tartalmaz?

Ha a diagram adat nem változott, a munkakönyv még mindig tartalmazhatja a korábban kiszámított gyorsítótárazott értéket. A kapcsolódó adatok módosítása után ez az érték már nem lehet érvényes. Egy olyan cella elérése, amelynek képlete nem kezelhető, a CellUnsupportedDataException kivételt váltja ki.

Ugyanazok-e a képlet hibák és a Python kivételek?

Nem. A #DIV/0!‑hoz hasonló eredmény egy táblázatkezelő érték, amely egy érvényes számításból származik. A CellInvalidFormulaException vagy CellCircularReferenceException kivételek arra utalnak, hogy a képletet nem lehet normál módon feldolgozni.

Frissül automatikusan a diagram, ha egy képlet cella megváltozik?

Egy diagram sorozat hivatkozhat munkakönyvi cellákra. Először számolja újra a munkakönyvet, majd mentse vagy renderelje a prezentációt. Ha a diagram adatpontjai a kiszámított cellákra mutatnak, a diagram az új cellaértékekkel frissül; nincs szükség külön diagram‑frissítő metódusra ebben a munkafolyamatban.

Használhatók külső Excel munkakönyvek diagramokhoz?

Igen, a diagram adat konfigurálható külső munkakönyv használatára a diagram adat API‑val. Azonban ebben a cikkben leírt képletszámítási munkafolyamat csak a diagram adatkönyvre és az Aspose.Slides által értékelt képletszegmensre vonatkozik. Ne feltételezze, hogy a calculate_formulas teljes újraszámítást végez tetszőleges képleteken egy külső XLSX fájlban.

Használhatók olyan képletek, amelyek másik munkalapra vagy munkakönyvre hivatkoznak?

Excel‑stílusú hivatkozások létezhetnek a diagram munkakönyvekben, de a képletértékelés korlátozott a támogatott elemző és függvénykészlet által. Ha egy kereszt‑lap vagy külső hivatkozás elengedhetetlen, ellenőrizze a képletet a saját Aspose.Slides verziójával. Azoknál a munkafolyamatoknál, amelyek széles Excel hivatkozási kompatibilitást igényelnek, számolja ki a munkakönyvet külsőleg, és írja vissza a feloldott értékeket a diagram adatba.

Kell-e =‑vel kezdeni a képlet karakterláncát?

Az Aspose.Slides API példák a B2-C2 vagy SUM(B2:B5) kifejezéseket egyenlőségjel nélkül adják meg. Az ilyen forma használata biztosítja, hogy a generált képletek összhangban legyenek a dokumentált API példákkal.