MS PowerPointは、テキスト、グラフィックス、アニメーション、チャート、およびその他のいくつかの要素を含む魅力的なプレゼンテーションを作成できる機能豊富なアプリケーションです。この投稿では、C++アプリケーション内に基本的なPowerPoint自動化機能を実装する方法を学習します。特に、PowerPointプレゼンテーションを作成し、C++を使用してテキスト、画像、グラフ、および表をスライドに追加する方法を理解するようになります。
- C++ PowerPoint API
- C++でPowerPointプレゼンテーションを作成する
- プレゼンテーションにスライドを追加
- PowerPointスライドにテキストを追加
- プレゼンテーションでテーブルを作成
- プレゼンテーションでグラフを作成
- 既存のPowerPointプレゼンテーションを開く
- 無料ライセンスを取得
C++ PowerPoint API
Aspose.Slides for C++は、C++アプリケーション内のPowerPointプレゼンテーション操作機能を自動化するように設計されています。 APIを使用すると、PowerPointプレゼンテーションをシームレスに作成、編集、または変換できます。 APIファイルの完全なパッケージをダウンロードするか、NuGetから取得できます。
C++でPowerPointプレゼンテーションを作成する
Aspose.Slides for C++を使用して空のPowerPointプレゼンテーションを作成することから始めましょう。この操作を実行する手順は次のとおりです。
- Presentationクラスのオブジェクトを作成します。
- Presentation->Save(string, SaveFormat::Pptx)メソッドを使用してプレゼンテーションを保存します。
次のコードサンプルは、C++を使用してPowerPointプレゼンテーションを作成する方法を示しています。
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// ドキュメントディレクトリへのパス。
const String outPath = u"../out/SampleChartresult.pptx";
//PPTXファイルを表すPresentationクラスをインスタンス化します
SharedPtr<Presentation> pres = MakeObject<Presentation>();
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// タイプラインのオートシェイプを追加します
slide->get_Shapes()->AddAutoShape(Aspose::Slides::ShapeType::Line, 50.0, 150.0, 300.0, 0.0);
//プレゼンテーションの保存
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
C++でプレゼンテーションにスライドを追加する
PowerPointプレゼンテーションを作成したら、スライドを挿入できます。以下は、PowerPointプレゼンテーションにスライドを追加する手順です。
- Presentationクラスのオブジェクトを作成します。
- Presentation->getSlides()メソッドを使用して、ISlideCollectionオブジェクトのスライドを取得します。
- ISlideCollection->AddEmptySlide()メソッドを使用してスライドを追加します。
- Presentation->Save(string, SaveFormat::Pptx)メソッドを使用してプレゼンテーションを保存します。
次のコードサンプルは、C++を使用してPowerPointプレゼンテーションにスライドを追加する方法を示しています。
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// ドキュメントディレクトリへのパス。
const String outPath = u"../templates/AddSlides.pptx";
// プレゼンテーションファイルを表すPresentationクラスをインスタンス化します
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// SlideCollectioncalssをインスタンス化します
SharedPtr<ISlideCollection> slds = pres->get_Slides();
for (int i = 0; i < pres->get_LayoutSlides()->get_Count(); i++)
{
// スライドコレクションに空のスライドを追加します
slds->AddEmptySlide(pres->get_LayoutSlides()->idx_get(i));
}
// PPTXファイルをディスクに保存します
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
スライドの操作の詳細については、スライドの追加、フォーマット、および操作にアクセスしてください。
C++を使用してPowerPointスライドにテキストを追加する
それでは、PowerPointプレゼンテーションのスライドにテキストを追加しましょう。このためには、スライドにテキストボックスを挿入する必要があります。この操作を実行する手順は次のとおりです。
- Presentationクラスを使用して、新しいプレゼンテーションを作成するか、既存のプレゼンテーションをロードします。
- Presentation->getSlides()->idx_get(int)メソッドを使用して、ISlideオブジェクトへのスライドの参照を取得します。
- ISlide->getShapes()->AddAutoShape(ShapeType::Rectangle、int, int, int, int)メソッドを使用してスライドに長方形を追加し、IAutoShapeオブジェクトでその参照を取得します。
- IAutoShape->AddTextFrame(u “”)メソッドを使用してテキストフレームを追加します。
- IAutoShape->getTextFrame()を使用してテキストフレームをITextFrameオブジェクトに取得します。
- ITextFrame->getParagraphs()->idx_get(0)を使用して段落をIParagraphオブジェクトに取得します。
- IParagraph->getPortions()->idx_get(0)を使用して段落の一部にIPortionオブジェクトにアクセスします。
- IPortion->setText(u “Aspose TextBox”)メソッドを使用してテキストを設定します。
- Presentation->Save(string, SaveFormat::Pptx)メソッドを使用してプレゼンテーションを保存します。
次のコードサンプルは、C++を使用してPowerPointプレゼンテーションのスライドにテキストを追加する方法を示しています。
// ドキュメントディレクトリへのパス。
const String outPath = u"../out/TextBoxOnSlideProgram_out.pptx";
const String templatePath = u"../templates/DefaultFonts_out.pptx";
// 目的のプレゼンテーションをロードします
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// 最初のスライドにアクセスする
SharedPtr<ISlide> sld = pres->get_Slides()->idx_get(0);
// 長方形タイプのオートシェイプを追加します
SharedPtr<IAutoShape> ashp = sld->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 150, 75, 150, 50);
// TextFrameを長方形に追加します
ashp->AddTextFrame(u" ");
// テキストフレームへのアクセス
SharedPtr<ITextFrame> txtFrame = ashp->get_TextFrame();
// テキストフレームの段落オブジェクトを作成します
SharedPtr<IParagraph> paragraph = txtFrame->get_Paragraphs()->idx_get(0);
// 段落の部分オブジェクトを作成する
SharedPtr<IPortion> portion = paragraph->get_Portions()->idx_get(0);
portion->set_Text(u"Aspose TextBox");
// PPTXをディスクに保存
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
プレゼンテーションでのテキストの操作の詳細については、テキストの追加、フォーマット、および操作にアクセスしてください。
C++を使用してプレゼンテーションでテーブルを作成する
以下は、Aspose.Slides forC++を使用してPowerPointプレゼンテーションのスライドにテーブルを追加する手順です。
- Presentationクラスのインスタンスを作成します。
- ISlideオブジェクトへのスライドの参照を取得します。
- 幅を指定して、列と行の配列を定義します。
- ISlide->getShapes()->AddTable()メソッドを使用して、スライドにテーブルを追加します。
- 各セルを繰り返し処理して、上下左右の境界線に書式を適用します。
- 必要に応じてセルを結合します。
- セルのテキストフレームにアクセスして、テキストを追加します。
- プレゼンテーションをPPTXファイルとして保存します。
次のコードサンプルは、C++を使用してPowerPointプレゼンテーションでテーブルを作成する方法を示しています。
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// ドキュメントディレクトリへのパス。
const String outPath = u"../out/TableFromScratch_out.pptx";
// 目的のプレゼンテーションをロードします
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// 最初のスライドにアクセスする
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);
// 幅のある列と高さのある行を定義する
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);
// スライドにテーブル形状を追加
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);
// 各セルの境界線形式を設定します
for (int x = 0; x < table->get_Rows()->get_Count(); x++)
{
SharedPtr<IRow> row = table->get_Rows()->idx_get(x);
for (int y = 0; y < row->get_Count(); y++)
{
SharedPtr<ICell> cell = row->idx_get(y);
cell->get_BorderTop()->get_FillFormat()->set_FillType(FillType::Solid);
cell->get_BorderTop()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
cell->get_BorderTop()->set_Width(5);
cell->get_BorderBottom()->get_FillFormat()->set_FillType(FillType::Solid);
cell->get_BorderBottom()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
cell->get_BorderBottom()->set_Width(5);
cell->get_BorderLeft()->get_FillFormat()->set_FillType(FillType::Solid);
cell->get_BorderLeft()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
cell->get_BorderLeft()->set_Width(5);
cell->get_BorderRight()->get_FillFormat()->set_FillType(FillType::Solid);
cell->get_BorderRight()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
cell->get_BorderRight()->set_Width(5);
}
}
// セルの結合(1、1)x(2、1)
table->MergeCells(table->idx_get(1, 1), table->idx_get(2, 1), false);
// セルの結合(1、2)x(2、2)
table->MergeCells(table->idx_get(1, 2), table->idx_get(2, 2), false);
// PPTXをディスクに保存
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
テーブルの操作の詳細については、テーブルの追加、更新、および操作にアクセスしてください。
C++を使用してプレゼンテーションでグラフを作成する
Aspose.Slides for C++は、分散、ツリーマップ、ヒストグラム、etcなどのさまざまな種類のグラフをサポートしています。デモンストレーションのために、通常のチャートを作成しましょう。この操作を実行する手順は次のとおりです。
- Presentationクラスのインスタンスを作成します。
- グラフを追加するスライドの参照を取得します。
- ISlide->getShapes()->AddChart()メソッドを使用して、デフォルトのデータと目的のタイプのグラフを追加します。
- IChartオブジェクトでチャートの参照を取得します。
- チャートデータをクリアし、新しいシリーズとカテゴリを追加します。
- チャートシリーズの新しいチャートデータを追加します。
- チャートシリーズの塗りつぶしの色を設定します。
- チャートシリーズのラベルを追加します。
- プレゼンテーションをPPTXファイルとして保存します。
次のコードサンプルは、C++を使用してPowerPointプレゼンテーションにグラフを挿入する方法を示しています。
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// ドキュメントディレクトリへのパス。
const String outPath = u"../out/NormalCharts_out.pptx";
//PPTXファイルを表すPresentationクラスをインスタンス化します
SharedPtr<Presentation> pres = MakeObject<Presentation>();
//最初のスライドにアクセスする
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// デフォルトデータでチャートを追加
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);
// チャートデータシートのインデックスを設定する
int defaultWorksheetIndex = 0;
// チャートデータワークシートの取得
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();
// チャートタイトルの設定
chart->get_ChartTitle()->AddTextFrameForOverriding(u"Sample Title");
chart->get_ChartTitle()->get_TextFrameForOverriding()->get_TextFrameFormat()->set_CenterText ( NullableBool::True);
chart->get_ChartTitle()->set_Height(20);
chart->set_HasTitle( true);
// デフォルトで生成されたシリーズとカテゴリを削除する
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();
int s = chart->get_ChartData()->get_Series()->get_Count();
s = chart->get_ChartData()->get_Categories()->get_Count();
// 今、新しいシリーズを追加します
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 2, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());
// カテゴリを追加する
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 1, 0, ObjectExt::Box<System::String>(u"Caetegoty 1")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 2, 0, ObjectExt::Box<System::String>(u"Caetegoty 2")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 3, 0, ObjectExt::Box<System::String>(u"Caetegoty 3")));
// 最初のチャートシリーズを取る
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);
// 系列データを入力しています
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(20)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(50)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(30)));
// シリーズの塗りつぶし色の設定
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
// 2番目のチャートシリーズを取る
series = chart->get_ChartData()->get_Series()->idx_get(1);
// 系列データを入力しています
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 2, ObjectExt::Box<double>(30)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(10)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(60)));
// シリーズの塗りつぶし色の設定
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Green());
// 最初のラベルにはカテゴリ名が表示されます
SharedPtr<IDataLabel> lbl = series->get_DataPoints()->idx_get(0)->get_Label();
lbl->get_DataLabelFormat()->set_ShowCategoryName(true);
lbl = series->get_DataPoints()->idx_get(1)->get_Label();
lbl->get_DataLabelFormat()->set_ShowSeriesName (true);
// 3番目のラベルの値を表示
lbl = series->get_DataPoints()->idx_get(2)->get_Label();
lbl->get_DataLabelFormat()->set_ShowValue (true);
lbl->get_DataLabelFormat()->set_ShowSeriesName(true);
lbl->get_DataLabelFormat()->set_Separator (u"/");
// プレゼンテーションファイルをディスクに書き込む
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
チャートの操作の詳細については、チャートの追加、フォーマット、および操作を参照してください。
C++でPowerPointプレゼンテーションを開く
コンテンツを編集するために、既存のPowerPointプレゼンテーションを開くこともできます。このためには、以下の手順に従うことができます。
- Presentationクラスを使用して、ファイル名を指定してPPTXファイルをロードします。
- プレゼンテーションの内容を更新します。
- Presentation->Save(string, SaveFormat)メソッドを使用して、更新されたファイルを保存します。
次のコードサンプルは、C++を使用して既存のPowerPointプレゼンテーションを開く方法を示しています。
// ドキュメントディレクトリへのパス
const String templatePath = u"../templates/AccessSlides.pptx";
// PPTXファイルを表すPresentationクラスをインスタンス化します
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// スライド数を印刷する
printf("Total slides inside presentation are : %d\n", pres->get_Slides()->get_Count());
無料ライセンスを取得する
評価の制限なしにAPIを試すために、無料の一時ライセンスを取得できます。
結論
この記事では、C++アプリケーション内からPowerPointプレゼンテーションを作成する方法を学習しました。ステップバイステップガイドとコードサンプル、およびAPIリファレンスは、プレゼンテーションを最初から作成し、スライド、テキスト、表、およびチャートをその中に挿入する方法を示しています。 ドキュメントを使用して、APIの詳細を調べることができます。