Come creare grafici nelle presentazioni in .NET
Supporto per il codice legacy
Per utilizzare il codice legacy sviluppato con Aspose.Slides per .NET nelle versioni precedenti alla 13.x, è necessario apportare alcune piccole modifiche al proprio codice affinché continui a funzionare come prima. Tutte le classi presenti nella vecchia versione di Aspose.Slides per .NET nei namespace Aspose.Slide e Aspose.Slides.Pptx sono ora unite in un unico namespace Aspose.Slides. Si prega di dare un’occhiata al seguente semplice frammento di codice per creare un grafico normale da zero in una presentazione utilizzando l’API legacy di Aspose.Slides e di seguire i passaggi che descrivono come migrare verso la nuova API unificata.
Approccio Legacy di Aspose.Slides per .NET
//Istanzia la classe PresentationEx che rappresenta il file PPTX
using (PresentationEx pres = new PresentationEx())
{
//Accedi alla prima slide
SlideEx sld = pres.Slides[0];
// Aggiungi grafico con dati predefiniti
ChartEx chart = sld.Shapes.AddChart(ChartTypeEx.ClusteredColumn, 0, 0, 500, 500);
//Imposta il titolo del grafico
chart.ChartTitle.Text.Text = "Sample Title";
chart.ChartTitle.Text.CenterText = true;
chart.ChartTitle.Height = 20;
chart.HasTitle = true;
//Imposta la prima serie per mostrare i valori
chart.ChartData.Series[0].Labels.ShowValue = true;
//Imposta l'indice del foglio dati del grafico
int defaultWorksheetIndex = 0;
//Ottieni il foglio dati del grafico
ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;
//Elimina le serie e le categorie generate di default
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
int s = chart.ChartData.Series.Count;
s = chart.ChartData.Categories.Count;
//Aggiungi nuove serie
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.Type);
//Aggiungi nuove categorie
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
//Prendi la prima serie del grafico
ChartSeriesEx series = chart.ChartData.Series[0];
//Ora popoliamo i dati della serie
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, 20));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 50));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 30));
//Imposta il colore di riempimento per la serie
series.Format.Fill.FillType = FillTypeEx.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Red;
//Prendi la seconda serie del grafico
series = chart.ChartData.Series[1];
//Ora popoliamo i dati della serie
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 2, 30));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 2, 10));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 2, 60));
//Imposta il colore di riempimento per la serie
series.Format.Fill.FillType = FillTypeEx.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Green;
//Crea etichette personalizzate per ciascuna categoria per la nuova serie
//La prima etichetta mostrerà il nome della categoria
DataLabelEx lbl = new DataLabelEx(series);
lbl.ShowCategoryName = true;
lbl.Id = 0;
series.Labels.Add(lbl);
//Mostra il nome della serie per la seconda etichetta
lbl = new DataLabelEx(series);
lbl.ShowSeriesName = true;
lbl.Id = 1;
series.Labels.Add(lbl);
//Mostra il valore per la terza etichetta
lbl = new DataLabelEx(series);
lbl.ShowValue = true;
lbl.ShowSeriesName = true;
lbl.Separator = "/";
lbl.Id = 2;
series.Labels.Add(lbl);
//Mostra valore e testo personalizzato
lbl = new DataLabelEx(series);
lbl.TextFrame.Text = "My text";
lbl.Id = 3;
series.Labels.Add(lbl);
//Salva la presentazione con il grafico
pres.Write(@"D:\AsposeChart.pptx");
}
Nuovo Approccio Aspose.Slides per .NET 13.x
//Istanzia la classe Presentation che rappresenta il file PPTX//Istanzia la classe Presentation che rappresenta il file PPTX
Presentation pres = new Presentation();
//Accedi alla prima slide
ISlide sld = pres.Slides[0];
// Aggiungi grafico con dati predefiniti
IChart chart = sld.Shapes.AddChart(ChartType.ClusteredColumn, 0, 0, 500, 500);
//Imposta il titolo del grafico
//chart.ChartTitle.TextFrameForOverriding.Text = "Sample Title";
chart.ChartTitle.AddTextFrameForOverriding("Sample Title");
chart.ChartTitle.TextFrameForOverriding.TextFrameFormat.CenterText = NullableBool.True;
chart.ChartTitle.Height = 20;
chart.HasTitle = true;
//Imposta la prima serie per mostrare i valori
chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;
//Imposta l'indice del foglio dati del grafico
int defaultWorksheetIndex = 0;
//Ottieni il foglio dati del grafico
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;
//Elimina le serie e le categorie generate di default
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
int s = chart.ChartData.Series.Count;
s = chart.ChartData.Categories.Count;
//Aggiungi nuove serie
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.Type);
//Aggiungi nuove categorie
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
//Prendi la prima serie del grafico
IChartSeries series = chart.ChartData.Series[0];
//Ora popoliamo i dati della serie
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 1, 20));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 50));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 30));
//Imposta il colore di riempimento per la serie
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Red;
//Prendi la seconda serie del grafico
series = chart.ChartData.Series[1];
//Ora popoliamo i dati della serie
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 2, 30));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 2, 10));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 2, 60));
//Imposta il colore di riempimento per la serie
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Green;
//Crea etichette personalizzate per ciascuna categoria per la nuova serie
//La prima etichetta mostrerà il nome della categoria
IDataLabel lbl = series.DataPoints[0].Label;
lbl.DataLabelFormat.ShowCategoryName = true;
lbl = series.DataPoints[1].Label;
lbl.DataLabelFormat.ShowSeriesName = true;
//Mostra il valore per la terza etichetta
lbl = series.DataPoints[2].Label;
lbl.DataLabelFormat.ShowValue = true;
lbl.DataLabelFormat.ShowSeriesName = true;
lbl.DataLabelFormat.Separator = "/";
//Salva la presentazione con il grafico
pres.Save("AsposeChart.pptx", SaveFormat.Pptx);
Si prega di dare un’occhiata al seguente semplice frammento di codice per creare un grafico a dispersione da zero in una presentazione utilizzando l’API legacy di Aspose.Slides e di vedere come ottenerlo con la nuova API unificata.
Approccio Legacy di Aspose.Slides per .NET
using (PresentationEx pres = new PresentationEx())
{
SlideEx slide = pres.Slides[0];
//Creazione del grafico predefinito
ChartEx chart = slide.Shapes.AddChart(ChartTypeEx.ScatterWithSmoothLines, 0, 0, 400, 400);
//Ottenimento dell'indice del foglio dati del grafico predefinito
int defaultWorksheetIndex = 0;
//Accesso al foglio dati del grafico
ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;
//Elimina le serie demo
chart.ChartData.Series.Clear();
//Aggiungi nuove serie
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, "Series 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, "Series 2"), chart.Type);
//Prendi la prima serie del grafico
ChartSeriesEx series = chart.ChartData.Series[0];
//Aggiungi nuovo punto (1:3) lì.
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 1));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 2, 3));
//Aggiungi nuovo punto (2:10)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 2));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 2, 10));
//Modifica il tipo della serie
series.Type = ChartTypeEx.ScatterWithStraightLinesAndMarkers;
//Modifica il marcatore della serie del grafico
series.MarkerSize = 10;
series.MarkerSymbol = MarkerStyleTypeEx.Star;
//Prendi la seconda serie del grafico
series = chart.ChartData.Series[1];
//Aggiungi nuovo punto (5:2) lì.
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 3, 5));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 4, 2));
//Aggiungi nuovo punto (3:1)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 3, 3));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 4, 1));
//Aggiungi nuovo punto (2:2)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 3, 2));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 4, 2));
//Aggiungi nuovo punto (5:1)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 5, 3, 5));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 5, 4, 1));
//Modifica il marcatore della serie del grafico
series.MarkerSize = 10;
series.MarkerSymbol = MarkerStyleTypeEx.Circle;
pres.Write("D:\\AsposeSeriesChart.pptx");
}
Nuovo Approccio Aspose.Slides per .NET 13.x
Presentation pres = new Presentation();
ISlide slide = pres.Slides[0];
//Creazione del grafico predefinito
IChart chart = slide.Shapes.AddChart(ChartType.ScatterWithSmoothLines, 0, 0, 400, 400);
//Ottenimento dell'indice del foglio dati del grafico predefinito
int defaultWorksheetIndex = 0;
//Accesso al foglio dati del grafico
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;
//Elimina le serie demo
chart.ChartData.Series.Clear();
//Aggiungi nuove serie
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, "Series 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, "Series 2"), chart.Type);
//Prendi la prima serie del grafico
IChartSeries series = chart.ChartData.Series[0];
//Aggiungi nuovo punto (1:3) lì.
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 1), fact.GetCell(defaultWorksheetIndex, 2, 2, 3));
//Aggiungi nuovo punto (2:10)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 2), fact.GetCell(defaultWorksheetIndex, 3, 2, 10));
//Modifica il tipo della serie
series.Type = ChartType.ScatterWithStraightLinesAndMarkers;
//Modifica il marcatore della serie del grafico
series.Marker.Size = 10;
series.Marker.Symbol = MarkerStyleType.Star;
//Prendi la seconda serie del grafico
series = chart.ChartData.Series[1];
//Aggiungi nuovo punto (5:2) lì.
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 3, 5), fact.GetCell(defaultWorksheetIndex, 2, 4, 2));
//Aggiungi nuovo punto (3:1)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 3, 3), fact.GetCell(defaultWorksheetIndex, 3, 4, 1));
//Aggiungi nuovo punto (2:2)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 4, 3, 2), fact.GetCell(defaultWorksheetIndex, 4, 4, 2));
//Aggiungi nuovo punto (5:1)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 5, 3, 5), fact.GetCell(defaultWorksheetIndex, 5, 4, 1));
//Modifica il marcatore della serie del grafico
series.Marker.Size = 10;
series.Marker.Symbol = MarkerStyleType.Circle;
pres.Save("AsposeScatterChart.pptx", SaveFormat.Pptx);