表は、情報や図を整理するのに役立ちます。情報を表示するために、Word文書DOCXDOCに表を挿入することがよくあります。ワードプロセッシングアプリケーションでは、C++を使用してテーブルを簡単に作成できます。次の例を実行して、Word文書のテーブルの操作を学ぶことができます。

これらすべてのトピックを詳しく調べてみましょう。

WordDocumentsAPIにテーブルを挿入する

まず、Aspose.Words for C++APIを使用してWord文書にテーブルを挿入することに注意してください。 APIは、新しいリリースまたはNuGetギャラリーからダウンロードして構成できます。適切に構成すると、APIによって公開されるメソッド、プロパティ、およびクラスを利用できるため、いくつかの単純なAPI呼び出しを使用して、DOCXやDOCファイルなどのMicrosoft Wordドキュメントを作成、編集、または操作できます。

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

いくつかの簡単な手順で、Word文書に表を挿入できます。ただし、ここで重要なのは、すべての子ノードが同じオブジェクトに属するように、ドキュメントオブジェクトを各ノードのコンストラクターに渡す必要があるということです。以下の手順に従う必要があります。

  1. ドキュメントクラスのオブジェクトを初期化します
  2. テーブルオブジェクトを作成します
  3. テーブルをドキュメントに追加
  4. 行と列を作成する
  5. テーブルセルにAutoFitを適用します
  6. 出力Wordドキュメントを保存する

以下のコードスニペットは、C++を使用してWord文書(DOCX / DOC)にテーブルを挿入する方法を示しています。

// ドキュメントディレクトリへのパス。
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// まず、テーブルオブジェクトを作成します。ドキュメントオブジェクトを渡す方法に注意してください
// 各ノードのコンストラクターへ。これは、作成するすべてのノードが属している必要があるためです
// いくつかの文書に。
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// テーブルをドキュメントに追加します。
doc->get_FirstSection()->get_Body()->AppendChild(table);

// ここで、EnsureMinimumを呼び出して、行とセルを作成できます。この方法が使用されます
// 指定されたノードが有効であることを確認するには、この場合、有効なテーブルに少なくとも1つが必要です。
// 行と1つのセル、したがって、このメソッドはそれらを作成します。
// 代わりに、行とテーブルの作成を自分で処理します。これはこれを行うための最良の方法です
// たとえば、アルゴリズム内にテーブルを作成する場合。
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"));
System::String outputPath = outputDataDir + u"InsertTableDirectly.doc";

// ドキュメントをディスクに保存します。
doc->Save(outputPath);

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

HTMLファイルに、DOCX、DOCなどのWord文書に挿入する必要のあるテーブルが含まれている可能性があります。または、Webサイトからテーブルをコピーする必要がある場合もあります。したがって、テーブルを最初から作成して設計する代わりに、HTMLマークアップをテーブルとしてWord文書に簡単に解析できます。たとえば、次のHTML文字列を使用してWord文書にテーブルを追加できます。

<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>

テーブルタグのサポートを基本的かつ重要なユースケースで示すことができるように、内容をシンプルにしています。さらに、ここで重要なのは、HTMLから作成されたテーブルにはAutoFitを適用できないということです。

Word文書にHTMLテーブルを挿入するには、以下の手順に従います。

  1. Documentクラスのインスタンスを初期化します
  2. InsertHtmlメソッドを使用してHTMLマークアップを渡します
  3. 出力DOCXワードファイルを保存します

以下のコードは、これらの手順に従い、C++を使用してHTMLでWord文書にテーブルを作成する方法を示しています。

// ドキュメントディレクトリへのパス。
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// HTMLからテーブルを挿入します。 AutoFitSettingsはテーブルには適用されないことに注意してください
// HTMLから挿入。
builder->InsertHtml(u"<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>");

System::String outputPath = outputDataDir + u"InsertTableFromHtml.doc";
// ドキュメントをディスクに保存します。
doc->Save(outputPath);

この方法は、上記で検討したアプローチよりも少し単純であることがわかります。その理由は、HTML文字列のTableタグにはすべての情報が含まれているため、行、列、またはセルごとに各ノードを1つずつ追加する必要がないためです。以下は、Wordドキュメントに追加されたこの単純なHTMLテーブルのスクリーンショットです。

Wordにテーブルを挿入

C++でドキュメントビルダーを使用してテーブルを挿入する

Aspose.Words for C++ APIの最も優れている点は、APIの競争力を高め、他のオプションの中でも際立ったさまざまな機能を提供することです。同様に、ドキュメントビルダーを使用してテーブルを挿入する機能は、Word文書(DOC / DOCX)にテーブルを追加する別のアプローチです。それでは、3つの異なる観点から詳細を調べてみましょう。

1)C++を使用してDocumentBuilderを使用してDOCXに単純なテーブルを挿入します

ドキュメントビルダーを使用してWord文書に簡単なテーブルを追加するには、次の手順に従う必要があります。

  1. ドキュメントオブジェクトを作成します
  2. StartTable()メソッドを呼び出して、セルを挿入します
  3. 行とセルを追加する
  4. 出力DOCXファイルを保存します

さらに、以下のコードスニペットは、C++を使用してDOCXファイルに単純なテーブルを挿入する方法を示しています。

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// このメソッドを呼び出して、テーブルの作成を開始します。
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

// 2番目のセルを作成する
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content.");

// 次のメソッドを呼び出して、行を終了し、新しい行を開始します。
builder->EndRow();

// 2行目の最初のセルを作成します。
builder->InsertCell();
builder->Write(u"Row 2, Cell 1 Content");

// 2番目のセルを作成する.
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content.");
builder->EndRow();

// テーブルの作成が完了したことを通知します。
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// ドキュメントをディスクに保存します。
doc->Save(outputPath);

2)C++を使用してDocumentBuilderを使用してDOCXにフォーマット済みテーブルを挿入します

以下の手順で、フォーマットされたテーブルをWord文書に挿入できます。

  1. Documentクラスのインスタンスを初期化します
  2. ヘッダー行を作成する
  3. フォーマットのインデントと機能を設定する
  4. フォントフォーマットをリセット
  5. 出力WordDOCXファイルを保存します

以下のコードスニペットは、C++を使用してDOCXファイルにフォーマットされたテーブルを作成します。

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Table> table = builder->StartTable();

// ヘッダー行を作成します。
builder->InsertCell();

// テーブルの左インデントを設定します。テーブル全体のフォーマットは、後に適用する必要があります
// テーブルには少なくとも1つの行があります。
table->set_LeftIndent(20.0);

// 高さを設定し、ヘッダー行の高さルールを定義します。
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// ヘッダー行のいくつかの特別な機能。
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::FromArgb(198, 217, 241));
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Size(16);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Header Row,\n Cell 1");

// このセルは前のセルから継承されているため、このセルの幅を指定する必要はありません。
builder->InsertCell();
builder->Write(u"Header Row,\n Cell 2");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Header Row,\n Cell 3");
builder->EndRow();

// 他の行とセルの機能を設定します。
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_White());
builder->get_CellFormat()->set_Width(100.0);
builder->get_CellFormat()->set_VerticalAlignment(CellVerticalAlignment::Center);

// 高さをリセットし、テーブル本体に別の高さルールを定義します
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// フォントのフォーマットをリセットします。
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// 他のセルを構築します。
builder->Write(u"Row 1, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 1, Cell 3 Content");
builder->EndRow();
builder->InsertCell();
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Row 2, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 2, Cell 3 Content.");
builder->EndRow();
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.FormattedTable.doc";

// ドキュメントをディスクに保存します。
doc->Save(outputPath);

3)C++を使用してDocumentBuilderでDOCXにネストされたテーブルを挿入します

既存のテーブル内に別のテーブルが必要になる場合があります。たとえば、テーブルの行または列のセルには、サブカテゴリまたはその他のフィールドのサブテーブルを含めることができます。このようなシナリオでは、ネストされたテーブルが役立ちます。ネストされたテーブルは、以下の手順に従って追加できます。

  1. 外側のTableを作成してから、EndTableメソッドを呼び出します
  2. 外側のテーブルのセル内に内側のテーブルを作成する
  3. 出力ワードドキュメントを保存する

次のコードスニペットは、C++を使用してWord文書にネストされたテーブルを挿入する方法を示しています。

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// 外側のテーブルを作成します。
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

// この呼び出しは、最初のテーブル内にネストされたテーブルを作成するために重要です
// この呼び出しがないと、下に挿入されたセルが外側のテーブルに追加されます。
builder->EndTable();

// 外側のテーブルの最初のセルに移動します。
builder->MoveTo(cell->get_FirstParagraph());

// 内部テーブルを作成します。
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 2");
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.NestedTable.doc";

// ドキュメントをディスクに保存します。
doc->Save(outputPath);

結論

要約すると、さまざまなアプローチを使用して、Word文書にさまざまなテーブルを挿入する方法を学びました。単純なテーブルまたはHTML文字列を使用して、フォーマットされネストされたテーブルをワードドキュメント(DOC / DOCX)に挿入できます。ただし、ご不明な点やご質問がございましたら、無料サポートフォーラムまでお問い合わせください。また、APIリファレンスおよび製品ドキュメントを参照してください。

関連項目