C# を使用して Word で表を作成する | C# でネストされた表を作成する

Word 文書の表は、データを整理して明確で構造化された形式で表示するための強力なツールです。表は行と列で構成され、それらが交差してセルを形成し、テキスト、数値、画像、またはその他の要素を含めることができます。この記事では、C# を使用してプログラムで Word 文書に表を作成する方法を学びます。この記事では、コード サンプルでサポートされている DOCX ファイルに表を作成するさまざまな方法を示します。

この記事では、以下のトピックについて説明します。

Word 文書に表を作成するための C# ライブラリ

Word 文書内の表を操作するには、Aspose.Words for .NET ライブラリを使用します。これは、.NET アプリケーション内で直接プログラムを使用して Word 文書を動的に作成および操作できる強力なライブラリです。

次のコマンドを使用して、DLLをダウンロードするか、NuGetからインストールしてください。

PM> Install-Package Aspose.Words

C# で Word 文書に表を作成する

Aspose.Words for .NET を使用して Word 文書に表を作成するには、次の 2 つの方法があります。

  • DocumentBuilderクラスの使用
  • DOM (ドキュメント オブジェクト モデル) の使用

要件に最も適した方法を選択できます。それでは、それぞれの方法を詳しく見ていきましょう。

DocumentBuilder を使用してテーブルを作成する

DocumentBuilder クラスを使用すると、動的ドキュメントを最初から効率的かつ簡単に作成したり、既存のドキュメントを変更したりできます。包括的な機能により、テキスト、チェックボックス、OLE オブジェクト、段落、リスト、表、画像など、さまざまなコンテンツ要素をシームレスに挿入できます。

DocumentBuilder クラスを使用して Word 文書に表を作成するには、以下の手順に従ってください。

  1. Document クラスのオブジェクトを作成します。
  2. DocumentBuilder クラスのオブジェクトを作成します。
  3. StartTable() メソッドを使用して新しいテーブルを作成します。
  4. InsertCell() メソッドを使用してセルを挿入します。
  5. Write() メソッドを使用してセルにテキストを挿入します。
  6. 必要に応じて、セルとセルへのテキストの挿入を繰り返します。
  7. EndRow() メソッドを使用して行を終了します。
  8. EndTable() メソッドを使用してテーブルを終了します。
  9. 最後に、Save() メソッドを使用して Word 文書を保存します。

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

// このコード例は、C#を使用してWord文書に表を作成する方法を示しています。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// テーブルの構築を開始します。
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1 Content.");

// 2番目のセルを構築します。
builder.InsertCell();
builder.Write("Row 1, Cell 2 Content.");

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

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

// 2番目のセルを構築します。
builder.InsertCell();
builder.Write("Row 2, Cell 2 Content.");
builder.EndRow();

// テーブルの構築が完了したことを知らせます。
builder.EndTable();

doc.Save("CreateSimpleTable.docx");
DocumentBuilder を使用して Word で表を作成する

DocumentBuilder を使用してテーブルを作成する

ドキュメント オブジェクト モデル (DOM) を使用してテーブルを作成する

ドキュメント オブジェクト モデル (DOM) は、Word 文書のメモリ内表現です。これにより、プログラムによるアクセスが可能になり、Word 文書の内容と書式を読み取り、操作、変更できます。

DOM を使用して Word 文書に表を作成するには、以下の手順に従ってください。

  1. Document クラスのオブジェクトを作成します。
  2. Table() クラスを使用して新しいテーブルを作成します。
  3. AppendChild() メソッドを使用して、ドキュメント本体にテーブルを追加します。
  4. Row クラスのオブジェクトを作成し、Table.AppendChild(Row) メソッドを使用してテーブルに挿入します。
  5. Cell クラスのオブジェクトを作成し、書式設定オプションを設定し、セルにテキストを追加します。
  6. Row.AppendChild(Cell) メソッドを使用して、行にセルを挿入します。
  7. その後、必要な行数だけこのプロセスを繰り返します。
  8. 最後に、Save() メソッドを使用して Word 文書を保存します。

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

// このコード例は、C#でDOMを使用してWord文書に表を作成する方法を示しています。
Document doc = new Document();

// まずテーブルオブジェクトを作成します。ドキュメントオブジェクトを渡す必要があることに注意してください。
// 各ノードのコンストラクタに記述します。これは、作成するすべてのノードが
// ある文書に。
Table table = new Table(doc);
doc.FirstSection.Body.AppendChild(table);

// ここで、EnsureMinimumを呼び出して行とセルを作成することができます。このメソッドは
// 指定されたノードが有効であることを確認します。この場合、有効なテーブルには少なくとも 1 つの行と 1 つのセルが必要です。

// 代わりに、行とテーブルの作成を自分で処理します。
// アルゴリズム内にテーブルを作成する場合、これが最善の方法です。
Row row = new Row(doc);
row.RowFormat.AllowBreakAcrossPages = true;
table.AppendChild(row);

// これで、自動調整設定を適用できるようになりました。
table.AutoFit(AutoFitBehavior.FixedColumnWidths);

Cell cell = new Cell(doc);
cell.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue;
cell.CellFormat.Width = 80;
cell.AppendChild(new Paragraph(doc));
cell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 1 Text"));

// セルを追加する
row.AppendChild(cell);

// 次に、テーブル内の他のセルと行に対してこのプロセスを繰り返します。
// 既存のセルと行を複製することで、処理を高速化することもできます。
row.AppendChild(cell.Clone(false));
row.LastCell.AppendChild(new Paragraph(doc));
row.LastCell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 2 Text"));

// 文書を保存する
doc.Save("InsertTableDirectly.docx");
ドキュメント オブジェクト モデル (DOM) を使用してテーブルを作成する

ドキュメント オブジェクト モデル (DOM) を使用してテーブルを作成する

C# を使用して Word 文書にネストされたテーブルを作成する

表のセル内に新しい表を作成することもできます。Word 文書に入れ子になった表を作成する手順は次のとおりです。

  1. Document クラスのオブジェクトを作成します。
  2. DocumentBuilder クラスのオブジェクトを作成します。
  3. StartTable() メソッドを使用してテーブルを作成し、オブジェクト内のテーブルへの参照を取得します。
  4. InsertCell() メソッドを使用してセルを挿入し、オブジェクト内のセルへの参照を取得します。
  5. DocumentBuilder.Write() メソッドを使用してセルにテキストを挿入します。
  6. 必要に応じて、セルとセルへのテキストの挿入を繰り返します。
  7. すべての行を挿入したら、テーブルを終了します。
  8. MoveTo(cell.FirstParagraph) メソッドを使用して、コントロールを目的のセル内に移動します。
  9. セルを挿入して別の表を作成し、完了したら表を終了します。
  10. 最後に、Save() メソッドを使用して Word 文書を保存します。

次のコード サンプルは、C# を使用して Word 文書に入れ子になったテーブルを作成する方法を示しています。

// このコード例は、C#を使用してWord文書にネストされたテーブルを作成する方法を示しています。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Cell cell = builder.InsertCell();
builder.Writeln("Outer Table Cell 1");

builder.InsertCell();
builder.Writeln("Outer Table Cell 2");

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

// 外側の表の最初のセルに移動します。
builder.MoveTo(cell.FirstParagraph);

// 内部テーブルを構築します。
builder.InsertCell();
builder.Writeln("Inner Table Cell 1");
builder.InsertCell();
builder.Writeln("Inner Table Cell 2");
builder.EndTable();

// 文書を保存する
doc.Save("NestedTable.docx");
C# を使用して Word 文書にネストされたテーブルを作成する

C# を使用して Word 文書にネストされたテーブルを作成する

C# で Word 文書内の既存の表を複製する

以下の手順に従って、Word 文書内の既存の表を複製できます。

  1. Document クラスを使用して、テーブルを含む既存のドキュメントを読み込みます。
  2. GetChild(NodeType.TABLE, int, boolean) メソッドを使用してオブジェクト内のテーブルを取得します。
  3. Table.Clone(True) メソッドを使用してテーブルを複製します。
  4. Table.ParentNode.InsertAfter() メソッドを使用して、複製されたテーブルを挿入します。
  5. Table.ParentNode.InsertAfter(new Paragraph(Document), Table) メソッドを使用して、表の間に空の段落を挿入します。
  6. 最後に、Save() メソッドを使用して Word 文書を保存します。

次のコード サンプルは、C# を使用して Word 文書内のテーブルを複製する方法を示しています。

// このコード例は、C#を使用してWord文書内の既存の表を複製する方法を示しています。
Document doc = new Document("Tables.docx");

Table table = (Table) doc.GetChild(NodeType.Table, 0, true);

// 表を複製し、元の表の後にドキュメントに挿入します。
Table tableClone = (Table) table.Clone(true);
table.ParentNode.InsertAfter(tableClone, table);

// 2つの表の間に空の段落を挿入します。
// そうでなければ、保存時に 1 つに結合されます。これはドキュメントの検証に関係します。
table.ParentNode.InsertAfter(new Paragraph(doc), table);
            
doc.Save("CloneCompleteTable.docx");
C# で Word 文書内の既存の表を複製する

C# で Word 文書内の既存の表を複製する

HTML から Word 文書に表を作成する

以下の手順に従って、HTML 文字列を使用して Word 文書内に表を作成することもできます。

  1. Document クラスのオブジェクトを作成します。
  2. DocumentBuilder クラスのオブジェクトを作成します。
  3. DocumentBuilder.InsertHtml(String) メソッドを使用して、テーブルの HTML 文字列をドキュメントに挿入します。
  4. 最後に、Document.Save() メソッドを使用してドキュメントを保存します。

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

// このコード例は、C#を使用してWord文書にHTMLテーブルを挿入する方法を示しています。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

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

doc.Save("InsertTableFromHtml.docx");
HTML から Word 文書に表を作成する

HTML から Word 文書に表を作成する

無料のAPIライセンスを取得する

評価制限なしで Aspose.Words for .NET を使用するには、一時ライセンス を取得できます。

結論

この記事では、C# を使用して Word 文書に表を作成する方法を学びました。C# を使用してプログラムで表を作成するさまざまな方法を検討しました。また、Word 文書内のネストされた表を作成したり、既存の表を動的に複製したりする方法も確認しました。さらに、ドキュメント を使用して、ライブラリのさまざまな機能についてさらに詳しく学習したり、探索したりできます。不明な点がある場合は、無料サポート フォーラム でお気軽にお問い合わせください。

参照