C++でWord文書を作成する

Aspose.Wordsは、MS Word文書をプログラムで作成、編集、および変換できる、機能豊富なAPIのコレクションです。ワードプロセッシングドキュメントを操作するための基本的な機能と高度な機能を幅広く提供します。この記事では、Aspose.Words for C++の使用方法と、C++を使用してMSWord文書を最初から作成する方法を学習します。ステップバイステップガイドとコードサンプルでは、Word文書にテキスト、画像、表、リスト、およびその他の要素を挿入する方法を説明しています。

MSWordドキュメントを作成するためのC++API

Aspose.Words for C++を使用すると、MSWordを使用せずにC++アプリケーション内でワードプロセッシングドキュメントを生成および操作できます。次のコマンドでNuGetを使用して、APIをダウンロードするか、C++アプリケーションにインストールできます。

PM> Install-Package Aspose.Words.Cpp

C++を使用してMSWord文書を作成する

まず、簡単なWord文書を作成し、それを.docまたは.docxファイルとして保存しましょう。このためには、以下の手順に従う必要があります。

  • Documentクラスを使用して空白のWord文書を作成します。
  • DocumentBuilderクラスのオブジェクトを作成して、ドキュメントにコンテンツを追加します。
  • DocumentBuilder->Writeln()メソッドを使用してテキストを追加します。
  • Document->Save()メソッドを使用して、ドキュメントを.docまたは.docxファイルとして保存します。

次のコードサンプルは、C++を使用してWordDOCXドキュメントを作成する方法を示しています。

// ドキュメントを初期化します。
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// ドキュメントビルダーを使用して、ドキュメントにコンテンツを追加します。
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// テキストを追加
builder->Writeln(u"Hello World!"); 
// ドキュメントをディスクに保存します。
doc->Save(u"document.docx");

C++を使用して既存のWordDOC/DOCXを編集または更新する

Aspose.Words for C++を使用して既存のWord文書を編集することもできます。このため、APIはドキュメントのメモリ内表現にドキュメントオブジェクトモデル(DOM)を使用します。 DOMを使用すると、ヘッダー/フッター、段落、表などのWord文書の要素にアクセスできます。DOMの詳細については、こちらを参照してください。

Word文書を更新するには、Documentクラスを使用して文書をロードし、必要に応じて処理します。以下は、既存のWord文書を編集および更新する手順です。

  • Documentクラスを使用してWordドキュメントをロードします。
  • コンテンツにアクセスするためのDocumentBuilderクラスのオブジェクトを作成します。
  • 目的の段落(またはその他の要素)にアクセスして、コンテンツを更新します。
  • Document->Save()メソッドを使用して更新されたドキュメントを保存します。

次のコードサンプルは、C++を使用してWord文書の段落のテキストを更新する方法を示しています。

// ドキュメントを初期化します。
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// ドキュメントビルダーを使用して、ドキュメントにコンテンツを追加します。
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// セクションを取得
auto section = doc->get_Sections()->idx_get(0);
// 体を得る
auto body = section->get_Body();
// 最初の段落を取得する
auto para = body->get_FirstParagraph();
// テキストを更新
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// ドキュメントをディスクに保存します。
doc->Save(u"updated_document.docx");

C++を使用してWord文書に画像を挿入する

以下は、C++を使用してMSWord文書内に画像を挿入する手順です。

次のコードサンプルは、C++を使用してWord文書に画像を挿入する方法を示しています。

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// ページの左上にロゴを追加します。画像は他のすべてのテキストの前に配置されます。
System::SharedPtr<Shape> shape = builder->InsertImage( u"Aspose Logo.png", RelativeHorizontalPosition::Page, 60.0, RelativeVerticalPosition::Page, 60.0, -1.0, -1.0, WrapType::None);
doc->Save(u"document_with_image.docx");

C++を使用してWord文書に表を挿入する

表は、データを行と列の形式で保持するためのWord文書の重要な要素です。 Word文書内にテーブルを生成するには、以下の手順に従います。

  • Documentクラスを使用して新しいWord文書を作成します。
  • Tableクラスのオブジェクトを作成します。
  • Document->getFirstSection()->getBody()->AppendChild()メソッドを使用して、テーブルをドキュメントに挿入します。
  • Rowクラスを使用して新しい行を作成します。
  • Table->AppendChild(row)メソッドを使用して、テーブルに行を挿入します。
  • Cellを作成して新規作成し、Cell->getFirstParagraph()->AppendChild()メソッドを使用してテキストを挿入します。
  • Row->AppendChild()メソッドを使用して、セルを行に挿入します。
  • 複数の行を追加するためのプロセスを繰り返します。
  • Document->Save()メソッドを使用してドキュメントを保存します。

次のコードサンプルは、C++を使用してWord文書にテーブルを挿入する方法を示しています。

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// テーブルをドキュメントに追加します。
doc->get_FirstSection()->get_Body()->AppendChild(table); 
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// これで、任意の自動フィット設定を適用できます。
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// セルを作成して行に追加します
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);
// セルに段落を追加し、テキストを含む新しい実行を追加します。
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// セルを行に追加します。
row->AppendChild(cell);
// 次に、テーブル内の他のセルと行に対してこのプロセスを繰り返します。
// また、既存のセルと行のクローンを作成することで、処理を高速化できます。
row->AppendChild((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
// ドキュメントをディスクに保存します。
doc->Save(u"document_with_table.docx");

C++を使用してWord文書にリストを追加する

最後になりましたが、Word文書にリストを作成します。箇条書きを作成する手順は次のとおりです。

  • Documentクラスを使用して、新しいWordドキュメントを作成するか、既存のWordドキュメントをロードします。
  • 新しいDocumentBuilderオブジェクトを定義し、Documentオブジェクトで初期化します。
  • DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot))メソッドを使用してリストを作成します。
  • リストにデータを入力し、リストレベルを設定します。
  • ドキュメントをファイルとして保存します。

次のコードサンプルは、C++を使用してWord文書にリストを作成する方法を示しています。

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Microsoft Wordリストテンプレートの1つに基づいて番号付きリストを作成し、
// ドキュメントビルダーの現在の段落に適用します。
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// このリストには9つのレベルがあり、すべて試してみましょう。
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// MicrosoftWordリストテンプレートの1つに基づいて箇条書きを作成する
// and ドキュメントビルダーの現在の段落に適用します。
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// このリストには9つのレベルがあり、すべて試してみましょう。
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// これは、リストのフォーマットを停止する方法です。 
builder->get_ListFormat()->set_List(nullptr); 
// ドキュメントをディスクに保存します。
builder->get_Document()->Save(u"document_with_list.docx");

結論

この記事では、C++を使用してMSWord文書を最初から作成する方法を見てきました。さらに、テキスト、画像、表、リストなどの要素を新規または既存のWord文書に挿入する方法を学習しました。 ドキュメントを使用して、APIの高度な機能について詳しく調べることができます。

関連項目