Diagram munkalap képletek alkalmazása prezentációkban .NET-ben
Áttekintés
A PowerPoint diagramok általában a forrásadataikat egy beágyazott munkalapon tárolják. Az Aspose.Slides for .NET‑ben a diagramadatok munkafüzetén keresztül érheti el ezt a munkalapot, írhat be bemeneti értékeket, hozzárendelhet képleteket a cellákhoz, kiszámíthatja a támogatott képleteket, és a kiszámított cellákat diagramadatként használhatja.
Ez a cikk bemutatja a teljes képlet‑munkafolyamatot: diagram létrehozása, a munkalap feltöltése, A1‑ vagy R1C1‑stílusú képletek hozzárendelése, újraszámításuk, a kiszámított értékek beolvasása, ezeknek a celláknak a csatlakoztatása egy diagram sorozathoz, és 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ázat‑specifikus hibákat.
Diagram munkalapok és képletek
A diagram munkalapja tartalmazza a kategóriákat, sorozatneveket és az értékeket, amelyeket a diagram használ. PowerPoint‑ban a munkalapot a diagramadat‑szerkesztő megnyitásával tekintheti meg:

Az Aspose.Slides‑ben a munkalap a diagram adatainak munkafüzete révén érhető el. A1‑stílusú képletekhez használja a Formula tulajdonságot, R1C1‑stílusú képletekhez a R1C1Formula tulajdonságot. A bemeneti cellák vagy képletek módosítása után hívja a CalculateFormulas 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ágon keresztül adja vissza az eredményt. Ez fontos, ha a kódban meg kell vizsgálnia egy képlet eredményét, vagy a cellát diagram adatpontként kívánja használni.
Diagram létrehozása és a munkalap képleteinek kiszámítása
Az alábbi példa egy teljes munkafolyamatot mutat be. Létrehoz egy csoportosított oszlopdiagramot, törli a mintaadatokat, beírja a negyedéves bevétel‑ és kiadási értékeket, képletekkel számolja ki a profitot, kiolvassa az eredményeket, a kiszámított cellákat diagramértékekként használja, és elmenti a prezentációt.
using System;
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 600, 350);
var workbook = chart.ChartData.ChartDataWorkbook;
var worksheetIndex = 0;
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
workbook.Clear(worksheetIndex);
var category1 = workbook.GetCell(worksheetIndex, "A2", "Q1");
var category2 = workbook.GetCell(worksheetIndex, "A3", "Q2");
var category3 = workbook.GetCell(worksheetIndex, "A4", "Q3");
workbook.GetCell(worksheetIndex, "B1", "Revenue");
workbook.GetCell(worksheetIndex, "C1", "Expenses");
workbook.GetCell(worksheetIndex, "D1", "Profit");
workbook.GetCell(worksheetIndex, "B2").Value = 120.0;
workbook.GetCell(worksheetIndex, "C2").Value = 80.0;
workbook.GetCell(worksheetIndex, "B3").Value = 150.0;
workbook.GetCell(worksheetIndex, "C3").Value = 95.0;
workbook.GetCell(worksheetIndex, "B4").Value = 135.0;
workbook.GetCell(worksheetIndex, "C4").Value = 110.0;
var profit1 = workbook.GetCell(worksheetIndex, "D2");
var profit2 = workbook.GetCell(worksheetIndex, "D3");
var profit3 = workbook.GetCell(worksheetIndex, "D4");
profit1.Formula = "B2-C2";
profit2.Formula = "B3-C3";
profit3.Formula = "B4-C4";
workbook.CalculateFormulas();
var q1Profit = Convert.ToDouble(profit1.Value); // 40
var q2Profit = Convert.ToDouble(profit2.Value); // 55
var q3Profit = Convert.ToDouble(profit3.Value); // 25
Console.WriteLine($"Q1 profit: {q1Profit}");
Console.WriteLine($"Q2 profit: {q2Profit}");
Console.WriteLine($"Q3 profit: {q3Profit}");
chart.ChartData.Categories.Add(category1);
chart.ChartData.Categories.Add(category2);
chart.ChartData.Categories.Add(category3);
var profitSeries = chart.ChartData.Series.Add(workbook.GetCell(worksheetIndex, "D1"), chart.Type);
profitSeries.DataPoints.AddDataPointForBarSeries(profit1);
profitSeries.DataPoints.AddDataPointForBarSeries(profit2);
profitSeries.DataPoints.AddDataPointForBarSeries(profit3);
profitSeries.Labels.DefaultDataLabelFormat.ShowValue = true;
presentation.Save("chart-formulas.pptx", 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ési hívás: először számolja újra a munkafüzetet, majd használja vagy mentse a diagramadatokat, amelyek a kiszámított cellákra mutatnak.
A1‑stílusú képletek használata
Az A1 jelölés betűkkel azonosítja az oszlopokat, számokkal a sorokat. A1‑stílusú kifejezéseket a IChartDataCell.Formula segítségével adhatja meg.
using Aspose.Slides;
using Aspose.Slides.Charts;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
var workbook = chart.ChartData.ChartDataWorkbook;
workbook.GetCell(0, "C3").Value = 10;
workbook.GetCell(0, "F2").Value = 2;
workbook.GetCell(0, "G2").Value = 3;
workbook.GetCell(0, "H2").Value = 4;
var cell = workbook.GetCell(0, "A2");
cell.Formula = "C3+SUM(F2:H2)";
workbook.CalculateFormulas();
var value = cell.Value; // 19
A leggyakoribb A1‑hivatkozási formák:
| Hivatkozás | Relatív | Abszolút | Vegyes |
|---|---|---|---|
| Cella | A2 |
$A$2 |
A$2, $A2 |
| Sor | 2:2 |
$2:$2 |
— |
| Oszlop | A:A |
$A:$A |
— |
| Tartomány | A2:C4 |
$A$2:$C$4 |
A$2:$C4, $A2:C$4 |
A relatív hivatkozások megváltozhatnak, ha egy képletet mozgat vagy másol egy táblázatkezelő alkalmazásban. 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 numerikusan azonosítja a sorokat és oszlopokat. A relatív hivatkozások négyzetes zárójelben megadott eltolásokat használnak. Ezt a szintaxist a IChartDataCell.R1C1Formula segítségével adhatja meg.
using Aspose.Slides;
using Aspose.Slides.Charts;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
var workbook = chart.ChartData.ChartDataWorkbook;
workbook.GetCell(0, "B2").Value = 12;
workbook.GetCell(0, "C2").Value = 5;
var cell = workbook.GetCell(0, "D2");
cell.R1C1Formula = "RC[-2]-RC[-1]";
workbook.CalculateFormulas();
var value = cell.Value; // 7
A leggyakoribb R1C1‑hivatkozási formák:
| Hivatkozás | Relatív | Abszolút | Vegyes |
|---|---|---|---|
| Cella | R[2]C[3] |
R2C3 |
R2C[3], R[2]C3 |
| Sor | R[2] |
R2 |
— |
| Oszlop | C[3] |
C3 |
— |
| Tartomány | 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 a ugyanabban a sorban két oszloppal balra lévő cellára (B2) hivatkozik.
Képlet‑állandók és operátorok
A beépített képletelemző logikai értékeket, numerikus literálokat, karakterláncokat, táblázat‑hibákat, aritmetikai operátorokat és összehasonlító operátorokat támogat.
Á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. |
| Karakterlánc | "abc", "2/3/2020 12:00" |
A szöveges literálokat dupla idézőjelek közé kell tenni a képletben. |
| Hiba‑eredmény | #DIV/0!, #N/A, #REF! |
Egy érvényes képlet visszaadhat táblázat‑hibát a normál eredmény helyett. |
Ez a példa több állandótípust használ:
using Aspose.Slides;
using Aspose.Slides.Charts;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
var workbook = chart.ChartData.ChartDataWorkbook;
workbook.GetCell(0, "A2").Value = false;
workbook.GetCell(0, "B2").Formula = "A2=TRUE";
workbook.GetCell(0, "C2").Formula = "1+0.5";
workbook.GetCell(0, "D2").Formula = ".3*1E-2";
workbook.GetCell(0, "E2").Formula = "\"abc\"";
workbook.GetCell(0, "F2").Formula = "2/0";
workbook.CalculateFormulas();
var logicalValue = workbook.GetCell(0, "B2").Value; // Hamis
var numericValue = workbook.GetCell(0, "C2").Value; // 1.5
var scientificValue = workbook.GetCell(0, "D2").Value; // 0.003
var stringValue = workbook.GetCell(0, "E2").Value; // abc
var errorValue = workbook.GetCell(0, "F2").Value; // #DIV/0!
Aritmetikai operátorok
| Operátor | Jelentés | Példa |
|---|---|---|
+ |
Összeadás vagy egyjegyű plusz | 2+3 |
- |
Kivonás vagy negáció | 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 mint | A2>3 |
>= |
Nagyobb vagy egyenlő | A2>=3 |
< |
Kisebb mint | A2<3 |
<= |
Kisebb vagy egyenlő | A2<=3 |
Támogatott előre definiált függvények
Az Aspose.Slides beépített képletelemzője diagrammunkalapokhoz készült, 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ény újraszámítható a CalculateFormulas metódussal.
| Függvény | Cél vagy támogatott forma | Példa |
|---|---|---|
ABS |
Abszolút érték | ABS(A2) |
AVERAGE |
Aritmetikai közép | AVERAGE(B2:B5) |
CEILING |
Felső 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övegérték keresése egy másikban | FIND("-",A2) |
FINDB |
Byte‑orientált szöveges keresés | FINDB("a",A2) |
IF |
Feltételes eredmény | IF(A2>0,A2,0) |
INDEX |
Hivatkozási forma | INDEX(A2:C4,2,3) |
LOOKUP |
Vektoralapú forma | LOOKUP(A2,B2:B5,C2:C5) |
MATCH |
Vektoralapú 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 szereplő korlátozások jelentősek: az INDEX dokumentált hivatkozási forma, míg a LOOKUP és MATCH vektoralapú formában szerepel. A DATE a 1900‑as dátumrendszert használja. A felsoroltakon kívül szereplő funkciókat tekintse az Aspose.Slides képletelemzője által nem támogatottnak, hacsak külön nincsenek dokumentálva.
Képletek számítása preferált kultúrával
Bizonyos munkafüzet‑függvények a szöveget kultúra‑specifikus szabályok szerint értelmezik. Ez különösen fontos a kettős‑bájtos karakterkészletet (DBCS) használó nyelvekhez készült függvényeknél. Az ilyen képletek helyes számításához hozza létre a LoadOptions objektumot, állítsa be a ISpreadsheetOptions.PreferredCulture értékét a LoadOptions.SpreadsheetOptions 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 opciókkal megnyit egy prezentációt, és minden diagram munkafüzetre meghívja a IChartDataWorkbook.CalculateFormulas metódust:
using System.Globalization;
using Aspose.Slides;
using Aspose.Slides.Charts;
var loadOptions = new LoadOptions
{
SpreadsheetOptions = new SpreadsheetOptions
{
PreferredCulture = CultureInfo.GetCultureInfo("ja-JP")
}
};
using var presentation = new Presentation("presentation.pptx", loadOptions);
foreach (var slide in presentation.Slides)
{
foreach (var shape in slide.Shapes)
{
if (shape is IChart chart)
{
chart.ChartData.ChartDataWorkbook.CalculateFormulas();
}
}
}
A preferált kultúra a prezentáció betöltési konfigurációjának része, ezért a Presentation példány létrehozása előtt adja meg. A munkafüzet képletei által elvárt kultúrát használja; például a japán DBCS számítási szabályoknak megfelelő képletekhez ja-JP legyen a beállítás.
Újraszámítás és gyorsítótárazott értékek
A táblázatfájlok általában tárolják a képletet és az utolsó kiszámított értékét is. Az Aspose.Slides ezért a IChartDataCell.Value tulajdonságból kiolvashat egy gyorsítótárazott értéket, ha a prezentáció betöltését követően a releváns diagramadatok nem változtak.
A bemeneti cellák vagy képletek módosítása után ne támaszkodjon egy régi gyorsítótárazott eredményre. Hívja a IChartDataWorkbook.CalculateFormulas metódust a kiszámított értékek kiolvasása vagy a diagramadatok mentése előtt, ha azok függnek ezektől.
A támogatott halmazon kívüli képletek esetén az Aspose.Slides előfordulhat, hogy nem tudja elemezni a képletet vagy annak függőségeit. Ha a munkafüzetet módosították, az előző gyorsítótárazott érték már nem tekinthető megbízhatónak. Ilyenkor 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ámítsa ki a képleteket egy olyan táblázat‑motorral, amely támogatja őket, majd írja vissza a kapott értékeket a diagram munkafüzetébe. Ne helyettesítse a nem támogatott képleteket tippelt é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ázat‑hibát eredményez, például #DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF! vagy #VALUE!. Ebben az esetben a hiba‑token egy cella‑eredmény, és a Value‑on keresztül érhető vissza.
Egy képlet a feldolgozás, hivatkozás, függőség vagy a támogatott‑adat szintjén is hibára fut. Az Aspose.Slides erre a helyzetre táblázat‑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ékhozzáférés körül:
using System;
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Spreadsheet;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 300);
var workbook = chart.ChartData.ChartDataWorkbook;
var cell = workbook.GetCell(0, "A2");
cell.Formula = "SUM(B2:B5)";
try
{
workbook.CalculateFormulas();
Console.WriteLine(cell.Value);
}
catch (CellInvalidFormulaException ex)
{
Console.Error.WriteLine($"Invalid formula: {ex.Message}");
}
catch (CellInvalidReferenceException ex)
{
Console.Error.WriteLine($"Invalid cell reference: {ex.Message}");
}
catch (CellCircularReferenceException ex)
{
Console.Error.WriteLine($"Circular reference: {ex.Message}");
}
catch (CellUnsupportedDataException ex)
{
Console.Error.WriteLine($"Unsupported spreadsheet data: {ex.Message}");
}
Gyakorlati korlátozások
A diagram munkalapok képlet‑támogatása egy meghatározott részhalmazra vonatkozik, nem a teljes Excel kompatibilitásra. Tartsa szem előtt ezeket a korlátozásokat 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 az Aspose.Slides‑nek kell újraszámítania a képleteket.
- Újraszámítás után módosítsa azokat a cellákat, amelyektől a képlet eredménye függ.
- A betöltött prezentációkból származó gyorsítótárazott értékeket tekintse pillanatfelvételnek, nem pedig az szerkesztés utáni újraszámítás helyettesítésének.
- Tesztelje a meglévő sablonok képleteit, mielőtt a kiszámított értékekre támaszkodna, különösen, ha olyan függvényeket tartalmaznak, amelyek nincsenek a dokumentált listán.
- A teljes táblázat‑számítási motorhoz szükséges képleteket végezze el külsőleg, majd frissítse a diagram munkafüzetét a kapott értékekkel.
GYIK
Mi a különbség a Formula és az R1C1Formula között?
A Formula A1‑stílusú kifejezést tárol, például B2-C2. Az R1C1Formula R1C1‑stílusú kifejezést tárol, például RC[-2]-RC[-1]. A legmegfelelőbb jelölést használja attól függően, hogyan generál vagy másol képleteket.
A számítás után a cellát vagy annak értékét kell beolvasnom?
Az IChartDataWorkbook.GetCell egy IChartDataCell‑et ad vissza. A kiszámított eredményhez a cella Value tulajdonságát kell kiolvasni az újraszámítás után.
Mikor kell meghívni a CalculateFormulas‑t?
Hívja a CalculateFormulas metódust a bemeneti értékek vagy képletek módosítása után, mielőtt a kiszámított eredményektől függne. Ez frissíti a beépített értékelő által támogatott képletek értékeit.
Az Aspose.Slides minden Excel‑függvényt támogat?
Nem. A beépített értékelő egy dokumentált függvényrészhalmazt támogat. A részhalmazon kívüli függvények nem számíthatók újra helyesen. Ha teljes Excel‑képlet kompatibilitásra van szükség, végezze a számítást egy megfelelő táblázat‑motorral, majd írja a végső értékeket a diagram munkafüzetébe.
Mi történik, ha egy betöltött prezentáció nem támogatott képletet tartalmaz?
Ha a diagram adatai nem változtak, a munkafüzet továbbra is tartalmazhat egy korábban kiszámított gyorsítótárazott értéket. A kapcsolódó adatok módosítása után ez a gyorsítótárazott érték már nem lehet érvényes. Egy olyan cella elérése, amelynek képletét nem tudja kezelni a rendszer, a CellUnsupportedDataException kivételt váltja ki.
Ugyanazok a képlet‑hibák, mint a .NET‑kivétel?
Nem. A #DIV/0! típusú eredmény egy táblázat‑érték, amely egy érvényes számításból származik. Az olyan kivételek, mint a CellInvalidFormulaException vagy a CellCircularReferenceException azt jelzik, hogy a képletet nem lehet normál módon feldolgozni.
Frissül automatikusan a diagram, ha egy képlet‑cellát módosítanak?
Egy diagram sorozata hivatkozhat munkafüzet‑cellákra. Először számolja újra a munkafüzetet, majd mentse vagy renderelje a prezentációt. Ha a diagram adatpontjai a kiszámított cellákra mutatnak, a diagram a frissített cellaértékeket használja; ehhez nincs külön diagram‑frissítési metódus szükséges.
Használhatók külső Excel‑munkafüzetek a diagramoknál?
Igen, a diagramadatok konfigurálhatók külső munkafüzettel a diagramadat‑API‑n keresztül. Azonban ebben a cikkben leírt képlet‑számítási munkafolyamat a diagram munkafüzetére és az Aspose.Slides által kiértékelt képlet‑részhalmazra vonatkozik. Ne feltételezze, hogy a CalculateFormulas teljes újraszámítást biztosít egy tetszőleges képletre egy külső XLSX‑fájlban.
Használhatók olyan képletek, amelyek más munkalapra vagy munkafüzetre hivatkoznak?
Az Excel‑stílusú hivatkozások előfordulhatnak a diagram munkafüzetben, de a képletelemzé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 pontos képletet a használt Aspose.Slides‑verzióval. Széles Excel‑hivatkozási kompatibilitást igénylő munkafolyamatok esetén számítsa ki a munkafüzetet külsőleg, majd írja vissza a feloldott értékeket a diagram adataiba.
A képletsoroknak kell-e = jellel kezdődniük?
Az Aspose.Slides API példák a B2-C2 vagy SUM(B2:B5) kifejezéseket a vezető = nélkül adják meg. Ezzel a formával a generált képletek összhangban maradnak a dokumentált API‑példákkal.