.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 のドキュメントを参照してください。ご不明な点がございましたら、フォーラム からお気軽にお問い合わせください。