JavaでPowerPointプレゼンテーションのチャートを作成または更新
概要
この記事では、JavaでPowerPointプレゼンテーションのチャートを作成する方法について説明します。また、Javaでチャートを更新する方法も紹介します。以下のトピックを取り扱います。
チャート: 通常
チャート: 散布図
チャート: 円グラフ
チャート: ツリーマップ
チャート: 株式
チャート: 箱ひげ図
チャート: ファunnel
チャート: サンバースト
チャート: ヒストグラム
チャート: レーダ
チャート: マルチカテゴリー
チャート: マップ
アクション: チャートを更新
チャートを作成する
チャートは、データを迅速に視覚化し、表やスプレッドシートからすぐには明らかでない洞察を得るのに役立ちます。
なぜチャートを作成するのか?
チャートを使用することで、次のことが可能になります。
- プレゼンテーションの1つのスライドに大量のデータを集約、要約、または凝縮する
- データのパターンやトレンドを明らかにする
- 時間の経過や特定の測定単位に関してデータの方向性や勢いを推測する
- 外れ値、異常、偏差、エラー、無意味なデータなどを特定する
- 複雑なデータをコミュニケートまたは提示する
PowerPointでは、挿入機能を通じてチャートを作成でき、さまざまなタイプのチャートを設計するために使用されるテンプレートが提供されています。Aspose.Slidesを使用すると、一般的なチャート(人気のあるチャートタイプに基づく)やカスタムチャートを作成できます。
通常のチャートを作成する
手順:チャートを作成する
コード手順:
- Presentationクラスのインスタンスを作成します。
- インデックスを通じてスライドの参照を取得します。
- 一部のデータを持つチャートを追加し、希望するチャートタイプを指定します。
- チャートのタイトルを追加します。
- チャートデータワークシートにアクセスします。
- すべてのデフォルト系列とカテゴリをクリアします。
- 新しい系列とカテゴリを追加します。
- チャート系列のための新しいチャートデータを追加します。
- チャート系列のための塗りつぶし色を追加します。
- チャート系列のラベルを追加します。
- 修正されたプレゼンテーションをPPTXファイルとして書き込みます。
このJavaコードは、通常のチャートを作成する方法を示しています:
// PPTXファイルを表すプレゼンテーションクラスをインスタンス化します
Presentation pres = new Presentation();
try {
// 最初のスライドにアクセスします
ISlide sld = pres.getSlides().get_Item(0);
// デフォルトデータを持つチャートを追加します
IChart chart = sld.getShapes().addChart(ChartType.ClusteredColumn, 0, 0, 500, 500);
// チャートのタイトルを設定します
chart.getChartTitle().addTextFrameForOverriding("サンプルタイトル");
chart.getChartTitle().getTextFrameForOverriding().getTextFrameFormat().setCenterText(NullableBool.True);
chart.getChartTitle().setHeight(20);
chart.hasTitle();
// 最初の系列に値を表示させます
chart.getChartData().getSeries().get_Item(0).getLabels().getDefaultDataLabelFormat().setShowValue(true);
// チャートデータシートのインデックスを設定します
int defaultWorksheetIndex = 0;
// チャートデータ作業シートを取得します
IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
// デフォルト生成された系列とカテゴリを削除します
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
int s = chart.getChartData().getSeries().size();
s = chart.getChartData().getCategories().size();
// 新しい系列を追加します
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 1, "シリーズ1"),chart.getType());
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 2, "シリーズ2"),chart.getType());
// 新しいカテゴリを追加します
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 1, 0, "カテゴリ1"));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 2, 0, "カテゴリ2"));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 3, 0, "カテゴリ3"));
// 最初のチャート系列を取得します
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
// 系列データを補充します
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 1, 20));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 50));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 30));
// 系列の塗りつぶし色を設定します
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(Color.RED);
// 2番目のチャート系列を取得します
series = chart.getChartData().getSeries().get_Item(1);
// 系列データを補充します
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 2, 30));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 2, 10));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 2, 60));
// 系列の塗りつぶし色を設定します
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(Color.GREEN);
// 新しい系列のためのカスタムラベルを作成します
// 最初のラベルにカテゴリ名を表示します
IDataLabel lbl = series.getDataPoints().get_Item(0).getLabel();
lbl.getDataLabelFormat().setShowCategoryName(true);
lbl = series.getDataPoints().get_Item(1).getLabel();
lbl.getDataLabelFormat().setShowSeriesName(true);
// 3番目のラベルに値を表示します
lbl = series.getDataPoints().get_Item(2).getLabel();
lbl.getDataLabelFormat().setShowValue(true);
lbl.getDataLabelFormat().setShowSeriesName(true);
lbl.getDataLabelFormat().setSeparator("/");
// チャートを含むプレゼンテーションを保存します
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
散布図を作成する
散布図(散布プロットまたはx-yグラフとも呼ばれる)は、パターンを検査したり、2つの変数間の相関関係を示すためによく使用されます。
次のような場合に散布図を使用することを検討するかもしれません:
- 対になった数値データを持っている
- 2つの変数がうまくペアになっている
- 2つの変数が関連しているかどうかを判断したい
- 従属変数に対して複数の値を持つ独立変数がある
手順:Javaで散布図を作成 | 手順:JavaでPowerPoint散布図を作成 | 手順:JavaでPowerPointプレゼンテーション散布図を作成
- 通常のチャートを作成するの手順に従ってください。
- 3番目の手順で、一部のデータを持つチャートを追加し、次のいずれかのチャートタイプを指定します。
- ChartType.ScatterWithMarkers - 散布図を表します。
- ChartType.ScatterWithSmoothLinesAndMarkers - 曲線で接続された散布図、データマーカー付き。
- ChartType.ScatterWithSmoothLines - データマーカーなしで接続された曲線の散布図。
- ChartType.ScatterWithStraightLinesAndMarkers - 線で接続された散布図、データマーカー付き。
- ChartType.ScatterWithStraightLines - データマーカーなしで接続された直線の散布図。
このJavaコードは、異なる系列のマーカーを持つ散布図を作成する方法を示しています:
// PPTXファイルを表すプレゼンテーションクラスをインスタンス化します
Presentation pres = new Presentation();
try {
// 最初のスライドにアクセスします
ISlide slide = pres.getSlides().get_Item(0);
// デフォルトチャートを作成します
IChart chart = slide.getShapes().addChart(ChartType.ScatterWithSmoothLines, 0, 0, 400, 400);
// デフォルトチャートデータ作業シートのインデックスを取得します
int defaultWorksheetIndex = 0;
// チャートデータ作業シートを取得します
IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
// デモ系列を削除します
chart.getChartData().getSeries().clear();
// 新しい系列を追加します
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 1, 1, "シリーズ1"), chart.getType());
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 1, 3, "シリーズ2"), chart.getType());
// 最初のチャート系列を取得します
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
// 系列に新しい点 (1:3) を追加します
series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 1), fact.getCell(defaultWorksheetIndex, 2, 2, 3));
// 新しい点 (2:10) を追加します
series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 2), fact.getCell(defaultWorksheetIndex, 3, 2, 10));
// 系列タイプを変更します
series.setType(ChartType.ScatterWithStraightLinesAndMarkers);
// チャート系列マーカーを変更します
series.getMarker().setSize(10);
series.getMarker().setSymbol(MarkerStyleType.Star);
// 2番目のチャート系列を取得します
series = chart.getChartData().getSeries().get_Item(1);
// そこに新しい点 (5:2) を追加します
series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 2, 3, 5), fact.getCell(defaultWorksheetIndex, 2, 4, 2));
// 新しい点 (3:1) を追加します
series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 3, 3, 3), fact.getCell(defaultWorksheetIndex, 3, 4, 1));
// 新しい点 (2:2) を追加します
series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 4, 3, 2), fact.getCell(defaultWorksheetIndex, 4, 4, 2));
// 新しい点 (5:1) を追加します
series.getDataPoints().addDataPointForScatterSeries(fact.getCell(defaultWorksheetIndex, 5, 3, 5), fact.getCell(defaultWorksheetIndex, 5, 4, 1));
// チャート系列マーカーを変更します
series.getMarker().setSize(10);
series.getMarker().setSymbol(MarkerStyleType.Circle);
pres.save("AsposeChart_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
円グラフを作成する
円グラフは、特にデータが数値ラベルを含むカテゴリーラベルを含む場合に、データの部分と全体の関係を示すのに最適です。ただし、データが多くの部分やラベルを含む場合は、代わりに棒グラフを使用することを検討することがあります。
手順:Javaで円グラフを作成 | 手順:JavaでPowerPoint円グラフを作成 | 手順:JavaでPowerPointプレゼンテーション円グラフを作成
- Presentationクラスのインスタンスを作成します。
- インデックスを介してスライドの参照を取得します。
- デフォルトデータを持つチャートを追加し、希望するタイプ(この場合はChartType.Pie)を指定します。
- チャートデータIChartDataWorkbookにアクセスします。
- デフォルト系列とカテゴリをクリアします。
- 新しい系列とカテゴリを追加します。
- チャート系列のための新しいデータを追加します。
- チャートのポイントを追加し、円グラフのセクターにカスタム色を追加します。
- 系列のラベルを設定します。
- 系列ラベルのリーダー線を設定します。
- 円グラフスライドの回転角度を設定します。
- 修正されたプレゼンテーションをPPTXファイルに書き込みます。
このJavaコードは、円グラフを作成する方法を示しています:
// PPTXファイルを表すプレゼンテーションクラスをインスタンス化します
Presentation pres = new Presentation();
try {
// 最初のスライドにアクセスします
ISlide slides = pres.getSlides().get_Item(0);
// デフォルトデータを持つチャートを追加します
IChart chart = slides.getShapes().addChart(ChartType.Pie, 100, 100, 400, 400);
// チャートのタイトルを設定します
chart.getChartTitle().addTextFrameForOverriding("サンプルタイトル");
chart.getChartTitle().getTextFrameForOverriding().getTextFrameFormat().setCenterText(NullableBool.True);
chart.getChartTitle().setHeight(20);
chart.setTitle(true);
// 最初の系列に値を表示させます
chart.getChartData().getSeries().get_Item(0).getLabels().getDefaultDataLabelFormat().setShowValue(true);
// チャートデータシートのインデックスを設定します
int defaultWorksheetIndex = 0;
// チャートデータ作業シートを取得します
IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
// デフォルト生成された系列とカテゴリを削除します
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
// 新しいカテゴリを追加します
chart.getChartData().getCategories().add(fact.getCell(0, 1, 0, "第一四半期"));
chart.getChartData().getCategories().add(fact.getCell(0, 2, 0, "第二四半期"));
chart.getChartData().getCategories().add(fact.getCell(0, 3, 0, "第三四半期"));
// 新しい系列を追加します
IChartSeries series = chart.getChartData().getSeries().add(fact.getCell(0, 0, 1, "シリーズ1"), chart.getType());
// 系列データを補充します
series.getDataPoints().addDataPointForPieSeries(fact.getCell(defaultWorksheetIndex, 1, 1, 20));
series.getDataPoints().addDataPointForPieSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 50));
series.getDataPoints().addDataPointForPieSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 30));
// 新しいポイントでセクターの色を設定します
// series.IsColorVaried = true;
// チャート群の色をバラバラにします
chart.getChartData().getSeriesGroups().get_Item(0).setColorVaried(true);
IChartDataPoint point = series.getDataPoints().get_Item(0);
point.getFormat().getFill().setFillType(FillType.Solid);
point.getFormat().getFill().getSolidFillColor().setColor(Color.CYAN);
// セクターの境界を設定します
point.getFormat().getLine().getFillFormat().setFillType(FillType.Solid);
point.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
point.getFormat().getLine().setWidth(3.0);
point.getFormat().getLine().setStyle(LineStyle.ThinThick);
point.getFormat().getLine().setDashStyle(LineDashStyle.DashDot);
IChartDataPoint point1 = series.getDataPoints().get_Item(1);
point1.getFormat().getFill().setFillType(FillType.Solid);
point1.getFormat().getFill().getSolidFillColor().setColor(Color.ORANGE);
// セクターの境界を設定します
point1.getFormat().getLine().getFillFormat().setFillType(FillType.Solid);
point1.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
point1.getFormat().getLine().setWidth(3.0);
point1.getFormat().getLine().setStyle(LineStyle.Single);
point1.getFormat().getLine().setDashStyle(LineDashStyle.LargeDashDot);
IChartDataPoint point2 = series.getDataPoints().get_Item(2);
point2.getFormat().getFill().setFillType(FillType.Solid);
point2.getFormat().getFill().getSolidFillColor().setColor(Color.YELLOW);
// セクターの境界を設定します
point2.getFormat().getLine().getFillFormat().setFillType(FillType.Solid);
point2.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.RED);
point2.getFormat().getLine().setWidth(2.0);
point2.getFormat().getLine().setStyle(LineStyle.ThinThin);
point2.getFormat().getLine().setDashStyle(LineDashStyle.LargeDashDotDot);
// 新しい系列のカテゴリごとにカスタムラベルを作成します
IDataLabel lbl1 = series.getDataPoints().get_Item(0).getLabel();
// lbl.ShowCategoryName = true;
lbl1.getDataLabelFormat().setShowValue(true);
IDataLabel lbl2 = series.getDataPoints().get_Item(1).getLabel();
lbl2.getDataLabelFormat().setShowValue(true);
lbl2.getDataLabelFormat().setShowLegendKey(true);
lbl2.getDataLabelFormat().setShowPercentage(true);
IDataLabel lbl3 = series.getDataPoints().get_Item(2).getLabel();
lbl3.getDataLabelFormat().setShowSeriesName(true);
lbl3.getDataLabelFormat().setShowPercentage(true);
// チャートのリーダーラインを表示します
series.getLabels().getDefaultDataLabelFormat().setShowLeaderLines(true);
// 円グラフセクターの回転角度を設定します
chart.getChartData().getSeriesGroups().get_Item(0).setFirstSliceAngle(180);
// チャートを含むプレゼンテーションを保存します
pres.save("PieChart_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
レーダチャートを作成する
レーダチャート(ラインチャートとも呼ばれる)は、時間の経過による値の変化を示したい場合によく使用されます。レーダチャートを使用すると、一度に多くのデータを比較し、時間の経過による変化や傾向を追跡し、データ系列の異常を強調表示することができます。
- Presentationクラスのインスタンスを作成します。
- インデックスを介してスライドの参照を取得します。
- データを持つチャートを追加し、希望するチャートタイプ(この場合は、
ChartType.Radar
)を指定します。 - 修正されたプレゼンテーションをPPTXファイルとして書き込みます。
このJavaコードは、レーダチャートを作成する方法を示しています:
Presentation pres = new Presentation();
try {
IChart lineChart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Radar, 20, 20, 400, 300);
pres.save("Radar-chart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
マップチャートを作成する
マップチャートは、データを含む領域の視覚化です。マップチャートは、地理的地域間でデータや値を比較するのに最適です。
手順:Javaでマップチャートを作成 | 手順:JavaでPowerPointマップチャートを作成 | 手順:JavaでPowerPointプレゼンテーションマップチャートを作成
このJavaコードは、マップチャートを作成する方法を示しています:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Map, 50, 50, 500, 400);
pres.save("mapChart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
チャートを更新する
手順:JavaでPowerPointチャートを更新 | 手順:Javaでプレゼンテーションチャートを更新 | 手順:JavaでPowerPointプレゼンテーションチャートを更新
- 更新したいチャートを含むプレゼンテーションを表すPresentationクラスをインスタンス化します。
- インデックスを使用してスライドの参照を取得します。
- すべてのシェイプをトラバースして、目的のチャートを見つけます。
- チャートデータワークシートにアクセスします。
- 系列データの更新によりチャートデータ系列を変更します。
- 新しい系列を追加し、それにデータを補充します。
- 修正されたプレゼンテーションをPPTXファイルとして書き込みます。
このJavaコードは、チャートを更新する方法を示しています:
Presentation pres = new Presentation();
try {
// 最初のスライドMarkerにアクセスします
ISlide sld = pres.getSlides().get_Item(0);
// デフォルトデータを持つチャートを取得します
IChart chart = (IChart)sld.getShapes().get_Item(0);
// チャートデータシートのインデックスを設定します
int defaultWorksheetIndex = 0;
// チャートデータワークシートを取得します
IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
// チャートカテゴリ名を変更します
fact.getCell(defaultWorksheetIndex, 1, 0, "修正されたカテゴリ1");
fact.getCell(defaultWorksheetIndex, 2, 0, "修正されたカテゴリ2");
// 最初のチャート系列を取得します
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
// 系列データを更新します
fact.getCell(defaultWorksheetIndex, 0, 1, "新しい_シリーズ1");// 系列名を変更します
series.getDataPoints().get_Item(0).getValue().setData(90);
series.getDataPoints().get_Item(1).getValue().setData(123);
series.getDataPoints().get_Item(2).getValue().setData(44);
// 2番目のチャート系列を取得します
series = chart.getChartData().getSeries().get_Item(1);
// 系列データを更新します
fact.getCell(defaultWorksheetIndex, 0, 2, "新しい_シリーズ2");// 系列名を変更します
series.getDataPoints().get_Item(0).getValue().setData(23);
series.getDataPoints().get_Item(1).getValue().setData(67);
series.getDataPoints().get_Item(2).getValue().setData(99);
// 新しい系列を追加します
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 3, "シリーズ3"), chart.getType());
// 3番目のチャート系列を取得します
series = chart.getChartData().getSeries().get_Item(2);
// 系列データを補充します
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 3, 20));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 3, 50));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 3, 30));
chart.setType(ChartType.ClusteredCylinder);
// チャートを含むプレゼンテーションを保存します
pres.save("AsposeChartModified_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
チャートのデータ範囲を設定する
チャートのデータ範囲を設定するには、次の手順を実行します:
- チャートを含むプレゼンテーションを表すPresentationクラスをインスタンス化します。
- インデックスを通じてスライドの参照を取得します。
- すべてのシェイプをトラバースして、目的のチャートを見つけます。
- チャートデータにアクセスして範囲を設定します。
- 修正されたプレゼンテーションをPPTXファイルとして保存します。
このJavaコードは、チャートのデータ範囲を設定する方法を示しています:
Presentation pres = new Presentation();
try {
ISlide slide = pres.getSlides().get_Item(0);
IChart chart = (IChart)slide.getShapes().get_Item(0);
chart.getChartData().setRange("Sheet1!A1:B4");
pres.save("SetDataRange_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
チャートでのデフォルトマーカーの使用
チャートでデフォルトマーカーを使用すると、各チャート系列は自動的に異なるデフォルトマーカーシンボルを持ちます。
このJavaコードは、チャート系列のマーカーを自動的に設定する方法を示しています:
Presentation pres = new Presentation();
try {
ISlide slide = pres.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 10, 10, 400, 400);
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
chart.getChartData().getSeries().add(fact.getCell(0, 0, 1, "シリーズ1"), chart.getType());
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
chart.getChartData().getCategories().add(fact.getCell(0, 1, 0, "C1"));
series.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 1, 1, 24));
chart.getChartData().getCategories().add(fact.getCell(0, 2, 0, "C2"));
series.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 2, 1, 23));
chart.getChartData().getCategories().add(fact.getCell(0, 3, 0, "C3"));
series.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 3, 1, -10));
chart.getChartData().getCategories().add(fact.getCell(0, 4, 0, "C4"));
series.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 4, 1, null));
chart.getChartData().getSeries().add(fact.getCell(0, 0, 2, "シリーズ2"), chart.getType());
//2番目のチャート系列を取得します
IChartSeries series2 = chart.getChartData().getSeries().get_Item(1);
//系列データを補充します
series2.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 1, 2, 30));
series2.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 2, 2, 10));
series2.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 3, 2, 60));
series2.getDataPoints().addDataPointForLineSeries(fact.getCell(0, 4, 2, 40));
chart.setLegend(true);
chart.getLegend().setOverlay(false);
pres.save("DefaultMarkersInChart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}