C# で DataTable を Word 文書に挿入する

.NET 開発者は、DataTable オブジェクトを頻繁に扱う必要があります。特に、データベースまたは XML/JSON ファイルからデータをインポートまたはエクスポートする必要がある場合。プログラムでドキュメントを生成しているときに、DataTable オブジェクトのデータを Word ドキュメントのテーブルに直接挿入する必要がある場合があります。このような場合のために、DataTable から C# の Word 文書にデータを挿入するための完璧で最も簡単なソリューションを紹介します。

Word DOC に DataTable を挿入する C# ライブラリ - 無料ダウンロード

DataTable オブジェクトから Word ドキュメントにデータをインポートするには、Aspose.Words for .NET を使用します。これは、MS Word ドキュメントを作成および処理できる機能豊富なライブラリです。 DLL をダウンロードするか、NuGet からインストールできます。

DLLをダウンロード

NuGet 経由でインストール

PM> Install-Package Aspose.Words

C# Word 文書に DataTable を挿入する - 手順

以下は、DataTable からデータを取得し、それを Word 文書に挿入するために従う手順です。

  • データベースまたはデータ ファイルから DataTable オブジェクトにデータを読み込みます。
  • 新しい Word ドキュメントを作成し、新しいテーブルを追加します。
  • DataTable の行をループし、各行を Word のテーブルに挿入します。

以上です。

これらの手順を C# コードに変換し、DataTable を Word ドキュメントにインポートする方法を見てみましょう。

C# で DataTable から Word DOC にデータを挿入する

最初に、ドキュメントを構築するための DocumentBuilder を受け入れるメソッド、データを持つ DataTable、および列見出しのインポートを有効/無効にする追加のパラメーターを受け入れるメソッドを記述します。さらに、Table オブジェクトを返します。

以下は、この方法のワークフローです。

  • 新しいテーブルを作成し、その参照を Table オブジェクトに取得します。
  • DataTable の列に従ってテーブルに列を挿入します。
  • 最初の行が見出しの場合、フォントの太さを設定します。
  • DataTable.Rows コレクションの各 DataRow をループします。
  • 値ごとに新しいセルを挿入し、それに応じてデータ型を設定します。
  • テーブル オブジェクトを返します。

以下は、データを DataTable から Word 文書のテーブルに C# でインポートするメソッドの実装です。

///<summary>
/// 指定された DataTable のコンテンツを新しい Aspose.Words Table オブジェクトにインポートします。 
/// テーブルはドキュメント ビルダーの現在の位置に挿入され、現在のビルダーの書式設定が定義されている場合はそれを使用します。
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // データ ソースからの列の名前がヘッダー行に含まれるかどうかを確認します。
    if (importColumnHeadings)
    {
        // プロパティを変更する前に、これらのプロパティの元の値を保存してください。
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // 適切なプロパティを使用して見出し行をフォーマットします。
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // 新しい行を作成し、各列の名前をテーブルの最初の行に挿入します。
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // 元のフォーマットを復元します。
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // オブジェクトごとに新しいセルを挿入します。
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // 日付と時刻のカスタム形式を定義します。
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // デフォルトでは、他のアイテムはテキストとして挿入されます。
                    builder.Write(item.ToString());
                    break;
            }

        }

        // 現在のレコードからすべてのデータを挿入したら、テーブルの行を終了できます。
        builder.EndRow();
    }

    // DataTable からのすべてのデータの挿入が完了したので、テーブルを終了できます。
    builder.EndTable();

    return table;
}

次に、このメソッドを呼び出して、DataTable を Word 文書に挿入します。

C# で DataTable を Word 文書にインポートする

以下は、DataTable から C# の Word ドキュメントにデータをインポートする手順です。

  • Document クラスを使用して、新しい Word ドキュメントを作成します (または既存のドキュメントを読み込みます)。
  • データベース/ファイルから DataTable オブジェクトにデータを読み取ります。
  • 前のセクションで記述したメソッドを呼び出して、返されたテーブルを取得します。
  • 表のフォーマットを設定します。
  • Document.Save() メソッドを使用して Word ファイルを保存します。

次のコード サンプルは、C# で Word ドキュメントに DataTable を挿入する方法を示しています。

// 新しいドキュメントを作成します。
Document doc = new Document();

// 表を挿入したい場所に配置し、追加の書式設定を指定することもできます
// テーブルにも適用されます。
DocumentBuilder builder = new DocumentBuilder(doc);

// 幅の広い表が予想されるため、ページの横向きを回転させたいと考えています。
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// DataTable として格納されているデータ ソースからデータを取得します。
DataTable dataTable = ds.Tables[0];

// DataTable に含まれるデータからドキュメント内にテーブルを作成します。
Table table = ImportTableFromDataTable(builder, dataTable, true);

// 表全体にフォーマットを適用する非常に簡単な方法として、表スタイルを適用できます。
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// 私たちのテーブルでは、画像列の見出しを削除したいと考えています。
table.FirstRow.LastCell.RemoveAllChildren();

// 出力ドキュメントを保存します。
doc.Save("Table.docx");

C# DataTable to Word Importer ライブラリ - 無料ライセンスを取得

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

結論

この記事では、C# で DataTable から Word 文書にデータを挿入する方法を学習しました。コード サンプルをアプリケーションに簡単に統合し、DataTable を使用してデータベース/XML/JSON から Word ドキュメントにデータを直接インポートできます。

.NET Word ライブラリ - 続きを読む

ライブラリの詳細については、Aspose.Words for .NET のドキュメントを参照してください。ご不明な点がございましたら、フォーラム からお気軽にお問い合わせください。

関連項目