1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#でDataTableを書式付きでExcelにエクスポートする方法

1
Posted at

日常業務において、アプリケーション内で生成された DataTable の内容を Excel ファイルとして出力する必要がある場面は少なくありません。CSVとは異なり、Excelはセルのフォント、色、枠線、日付形式などを柔軟に制御できるため、見た目にも分かりやすいデータ出力が可能です。

この記事では、C#環境において C# を使用し、DataTable を書式付きでExcelファイルにエクスポートする手順を紹介します。基本的なデータの挿入から、スタイルの設定、列幅の自動調整までを段階的に解説します。

この記事には以下の内容が含まれます:

  • DataTable データの作成または取得
  • C#で DataTable を Excel に挿入し、ファイルまたはストリームとして保存する
  • エクスポートした Excel ファイルのフォーマットを美しく設定する

この記事で説明する方法には、Free Spire.XLS for .NET が必要です。NuGet を使用してインストールできます:Install-Package FreeSpire.XLS。


DataTableの作成または取得

まずは、Excelに出力したいデータを DataTable 形式で用意します。以下の例では、社員情報を持つサンプルの DataTable を作成します。実際の開発では、データベースや業務処理から生成された DataTable をそのまま使うこともあります。

DataTable dt = new DataTable("Employees");

dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Columns.Add("Join Date", typeof(DateTime));
dt.Columns.Add("Salary", typeof(double));
dt.Columns.Add("Full-Time", typeof(bool));
dt.Columns.Add("Bonus Rate", typeof(decimal));

dt.Rows.Add(2001, "Ethan Brown", "Operations", new DateTime(2021, 4, 12), 60000.0, true, 0.04m);
dt.Rows.Add(2002, "Grace Lee", "Engineering", new DateTime(2019, 7, 23), 82000.5, true, 0.06m);
dt.Rows.Add(2003, "Liam Wilson", "Accounting", new DateTime(2020, 2, 14), 56000.0, false, 0.02m);
dt.Rows.Add(2004, "Olivia Davis", "Sales", new DateTime(2022, 10, 3), 49000.75, true, 0.05m);
dt.Rows.Add(2005, "Noah Martinez", "Engineering", new DateTime(2018, 5, 17), 91000.0, true, 0.07m);
dt.Rows.Add(2006, "Sophia Johnson", "Human Resources", new DateTime(2023, 3, 6), 47000.0, false, 0.03m);

このように列を定義し、型を指定した上でデータを追加します。DateTimedecimal のような型も、Spire.XLS を使えばExcelに正しく出力可能です。


Excelファイルへの挿入と保存(ストリーム保存対応)

次に、Spire.XLS を使って Excel ワークブックを作成し、DataTable の内容をワークシートに挿入します。デフォルトでは、列ヘッダーも含めて挿入され、型に応じた表示が自動的に行われます。

using Spire.Xls;

Workbook workbook = new Workbook();
workbook.Worksheets.Clear();
Worksheet sheet = workbook.Worksheets.Add(dt.TableName);
sheet.InsertDataTable(dt, true, 1, 1);

挿入位置は (1, 1)、すなわちA1セルから始まるよう指定しています。第二引数の true は列名(ヘッダー)を含めることを意味します。

作成したExcelファイルは、SaveToFile メソッドを使ってディスク上に保存できます。また、SaveToStream を使えばストリームに出力でき、Webアプリケーションなどでも柔軟に扱えます:

// ファイルとして保存
workbook.SaveToFile("output.xlsx", ExcelVersion.Version2013);
workbook.SaveToFile(dt.TableName + ".xls", FileFormat.Version97to2003);

// メモリストリームに保存(例:Webアプリ用途)
MemoryStream stream = new MemoryStream();
workbook.SaveToStream(stream, ExcelVersion.Version2013);

出力結果:
2025-08-01_173714.png


表の書式設定(ヘッダー、日付、列幅など)

そのまま出力しても機能的には問題ありませんが、可読性を高めるには表の見た目を整えることが重要です。ここでは、ヘッダー行にスタイルを適用し、日付列に表示形式を指定し、列幅を自動調整する方法を紹介します。

CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
headerStyle.Color = Color.LightGray;
headerStyle.Font.IsBold = true;
headerStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

CellRange header = sheet.Rows[0];
header.CellStyleName = "HeaderStyle";

このように、スタイルを作成してヘッダー行に一括適用できます。背景色やフォントの太さ、下線などを自由に設定可能です。

次に、日付列(この例では4列目)に対して、"yyyy-mm-dd" の表示形式を指定します:

CellRange dateColumn = sheet.Range["D2:D5"];
dateColumn.NumberFormat = "yyyy-mm-dd";

また、すべての列幅を内容に応じて自動調整するには、次のようにします:

sheet.AllocatedRange.AutoFitColumns();

この操作により、文字列や数字が切れずに表示され、見た目が格段に良くなります。

出力結果:

2025-08-01_174047.png


まとめ

この記事では、C# で DataTable を Excel ファイルにエクスポートし、さらに書式を設定して見やすく整える方法を解説しました。Spire.XLS for .NET を活用すれば、書式を含む実用的なExcelレポートを簡単に生成できます。保存方法もファイル出力とストリーム出力の両方に対応しており、Web・デスクトップ双方のシステムに応用可能です。

データの可視化や共有が求められる場面において、見た目にも整ったExcel出力は、業務効率と印象の向上に繋がります。

Excelファイルの処理に関するさらに多くのテクニックについては、Spire.XLS for .NETの公式チュートリアルをご確認ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?