.NET でプレゼンテーションにチャートを作成する方法

レガシーコードのサポート

13.x より前の Aspose.Slides for .NET バージョンで開発されたレガシーコードを使用するには、コードにいくつかの小さな変更を加える必要がありますが、そうすればコードは従来通りに動作します。旧 Aspose.Slides for .NET の Aspose.Slide および Aspose.Slides.Pptx 名前空間に存在したすべてのクラスは、現在単一の Aspose.Slides 名前空間に統合されています。以下のシンプルなコードスニペットをご確認いただき、レガシー Aspose.Slides API を使用してプレゼンテーション内でゼロから通常のチャートを作成する方法と、新しい統合 API への移行手順をご確認ください。

レガシー Aspose.Slides for .NET のアプローチ

//PPTX ファイルを表す PresentationEx クラスのインスタンス化
using (PresentationEx pres = new PresentationEx())
{
	//最初のスライドにアクセス
	SlideEx sld = pres.Slides[0];

	// デフォルトデータでチャートを追加
	ChartEx chart = sld.Shapes.AddChart(ChartTypeEx.ClusteredColumn, 0, 0, 500, 500);

	//チャートのタイトルを設定
	chart.ChartTitle.Text.Text = "Sample Title";
	chart.ChartTitle.Text.CenterText = true;
	chart.ChartTitle.Height = 20;
	chart.HasTitle = true;

	//最初のシリーズに値の表示を設定
	chart.ChartData.Series[0].Labels.ShowValue = true;

	//チャートデータシートのインデックスを設定 
	int defaultWorksheetIndex = 0;

	//チャートデータのワークシートを取得
	ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

	//デフォルトで生成されたシリーズとカテゴリを削除
	chart.ChartData.Series.Clear();
	chart.ChartData.Categories.Clear();
	int s = chart.ChartData.Series.Count;
	s = chart.ChartData.Categories.Count;

	//新しいシリーズを追加
	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);

	//新しいカテゴリを追加
	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"));

	//最初のチャートシリーズを取得
	ChartSeriesEx series = chart.ChartData.Series[0];

	//シリーズデータを設定
	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));

	//シリーズの塗りつぶしカラーを設定
	series.Format.Fill.FillType = FillTypeEx.Solid;
	series.Format.Fill.SolidFillColor.Color = Color.Red;


	//2 番目のチャートシリーズを取得
	series = chart.ChartData.Series[1];

	//シリーズデータを設定
	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));

	//シリーズの塗りつぶしカラーを設定
	series.Format.Fill.FillType = FillTypeEx.Solid;
	series.Format.Fill.SolidFillColor.Color = Color.Green;


	//新しいシリーズの各カテゴリにカスタムラベルを作成

	//最初のラベルはカテゴリ名を表示
	DataLabelEx lbl = new DataLabelEx(series);
	lbl.ShowCategoryName = true;
	lbl.Id = 0;
	series.Labels.Add(lbl);

	//2 番目のラベルはシリーズ名を表示
	lbl = new DataLabelEx(series);
	lbl.ShowSeriesName = true;
	lbl.Id = 1;
	series.Labels.Add(lbl);

	//3 番目のラベルは値を表示
	lbl = new DataLabelEx(series);
	lbl.ShowValue = true;
	lbl.ShowSeriesName = true;
	lbl.Separator = "/";
	lbl.Id = 2;
	series.Labels.Add(lbl);

	//値とカスタムテキストを表示
	lbl = new DataLabelEx(series);
	lbl.TextFrame.Text = "My text";
	lbl.Id = 3;
	series.Labels.Add(lbl);

	//チャート付きプレゼンテーションを保存
	pres.Write(@"D:\AsposeChart.pptx");
}

新しい Aspose.Slides for .NET 13.x のアプローチ

//PPTX ファイルを表す Presentation クラスをインスタンス化//PPTX ファイルを表す Presentation クラスをインスタンス化
Presentation pres = new Presentation();

//最初のスライドにアクセス
ISlide sld = pres.Slides[0];

// デフォルトデータでチャートを追加
IChart chart = sld.Shapes.AddChart(ChartType.ClusteredColumn, 0, 0, 500, 500);

//チャートのタイトルを設定
//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;

//最初のシリーズを値の表示に設定
chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;

//チャートデータシートのインデックスを設定
int defaultWorksheetIndex = 0;

//チャートデータのワークシートを取得
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;

//デフォルトで生成されたシリーズとカテゴリを削除
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
int s = chart.ChartData.Series.Count;
s = chart.ChartData.Categories.Count;

//新しいシリーズを追加
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);

//新しいカテゴリを追加
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"));

//最初のチャートシリーズを取得
IChartSeries series = chart.ChartData.Series[0];

//シリーズデータを設定

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

//シリーズの塗りつぶし色を設定
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Red;


//2 番目のチャートシリーズを取得
series = chart.ChartData.Series[1];

//シリーズデータを設定
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));

//シリーズの塗りつぶし色を設定
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Green;


//新しいシリーズの各カテゴリにカスタムラベルを作成

//最初のラベルはカテゴリ名を表示
IDataLabel lbl = series.DataPoints[0].Label;
lbl.DataLabelFormat.ShowCategoryName = true;

lbl = series.DataPoints[1].Label;
lbl.DataLabelFormat.ShowSeriesName = true;

//3 番目のラベルは値を表示
lbl = series.DataPoints[2].Label;
lbl.DataLabelFormat.ShowValue = true;
lbl.DataLabelFormat.ShowSeriesName = true;
lbl.DataLabelFormat.Separator = "/";

//チャート付きプレゼンテーションを保存
pres.Save("AsposeChart.pptx", SaveFormat.Pptx);

レガシー Aspose.Slides API を使用してプレゼンテーション内でゼロから散布図チャートを作成するシンプルなコードスニペットをご確認いただき、新しい統合 API でそれを実現する方法をご覧ください。

レガシー Aspose.Slides for .NET のアプローチ

using (PresentationEx pres = new PresentationEx())
{
    SlideEx slide = pres.Slides[0];

    //デフォルトチャートを作成
    ChartEx chart = slide.Shapes.AddChart(ChartTypeEx.ScatterWithSmoothLines, 0, 0, 400, 400);

    //デフォルトのチャートデータワークシートインデックスを取得
    int defaultWorksheetIndex = 0;

    //チャートデータワークシートにアクセス
    ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

    //デモシリーズを削除
    chart.ChartData.Series.Clear();

    //新しいシリーズを追加
    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);

    //最初のチャートシリーズを取得
    ChartSeriesEx series = chart.ChartData.Series[0];

    //そこに新しいポイント (1:3) を追加
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 1));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 2, 3));

    //新しいポイント (2:10) を追加
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 2));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 2, 10));

    //系列のタイプを編集
    series.Type = ChartTypeEx.ScatterWithStraightLinesAndMarkers;

    //チャート系列のマーカーを変更
    series.MarkerSize = 10;
    series.MarkerSymbol = MarkerStyleTypeEx.Star;

    //2番目のチャートシリーズを取得
    series = chart.ChartData.Series[1];

    //そこに新しいポイント (5:2) を追加
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 3, 5));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 4, 2));

    //新しいポイント (3:1) を追加
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 3, 3));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 4, 1));

    //新しいポイント (2:2) を追加
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 3, 2));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 4, 2));

    //新しいポイント (5:1) を追加
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 5, 3, 5));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 5, 4, 1));

    //チャート系列のマーカーを変更
    series.MarkerSize = 10;
    series.MarkerSymbol = MarkerStyleTypeEx.Circle;

    pres.Write("D:\\AsposeSeriesChart.pptx");
}

新しい Aspose.Slides for .NET 13.x のアプローチ

Presentation pres = new Presentation();

ISlide slide = pres.Slides[0];

//デフォルトチャートを作成
IChart chart = slide.Shapes.AddChart(ChartType.ScatterWithSmoothLines, 0, 0, 400, 400);

//デフォルトのチャートデータワークシートインデックスを取得
int defaultWorksheetIndex = 0;

//チャートデータワークシートにアクセス
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;

//デモシリーズを削除
chart.ChartData.Series.Clear();

//新しいシリーズを追加
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);

//最初のチャートシリーズを取得
IChartSeries series = chart.ChartData.Series[0];

//そこに新しいポイント (1:3) を追加
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 1), fact.GetCell(defaultWorksheetIndex, 2, 2, 3));

//新しいポイント (2:10) を追加
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 2), fact.GetCell(defaultWorksheetIndex, 3, 2, 10));

//シリーズのタイプを編集
series.Type = ChartType.ScatterWithStraightLinesAndMarkers;

//チャートシリーズのマーカーを変更
series.Marker.Size = 10;
series.Marker.Symbol = MarkerStyleType.Star;

//2番目のチャートシリーズを取得
series = chart.ChartData.Series[1];

//そこに新しいポイント (5:2) を追加
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 3, 5), fact.GetCell(defaultWorksheetIndex, 2, 4, 2));

//新しいポイント (3:1) を追加
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 3, 3), fact.GetCell(defaultWorksheetIndex, 3, 4, 1));

//新しいポイント (2:2) を追加
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 4, 3, 2), fact.GetCell(defaultWorksheetIndex, 4, 4, 2));

//新しいポイント (5:1) を追加
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 5, 3, 5), fact.GetCell(defaultWorksheetIndex, 5, 4, 1));

//チャートシリーズのマーカーを変更
series.Marker.Size = 10;
series.Marker.Symbol = MarkerStyleType.Circle;

pres.Save("AsposeScatterChart.pptx", SaveFormat.Pptx);