現代の企業における情報管理では、Excel は最も一般的なデータ保存および分析ツールとなっています。社員情報表、売上データ表、財務分析表など、ほとんどの部門が Excel を利用しています。しかし、実務では、システム上のデータを手動で入力するのではなく、動的に Excel ファイルを生成する必要があります。手作業による操作は効率が低く、エラーも発生しやすいため、レポートの一括生成や定期集計、外部公開などのシナリオでは特に不向きです。
この問題を解決するために、C# 開発者は Free Spire.XLS for .NET を利用して、コードから Excel ファイルを迅速に作成、データを入力、スタイルを適用し、XLSX、CSV、PDF など複数形式で保存できます。さらに、MemoryStream に保存してネットワーク経由で送信することも可能です。本文では、C# での Excel データエクスポートを、具体例を通じて詳細に解説します。
1. Spire.XLS のインストール
コーディングを開始する前に、NuGet で Spire.XLS をインストールします:
Install-Package FreeSpire.XLS
インストール後、C# プロジェクトで次の名前空間を参照できます:
using Spire.Xls;
using System.Data;
using System.IO;
2. ワークブックの作成とデータの入力
以下の例では、Excel ファイルを作成し、社員情報をワークシートに入力する方法を示します:
// ワークブックの作成
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";
// DataTable の作成と列の追加
DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");
// サンプルデータの追加
table.Rows.Add("E101", "John Miller", "Finance", "2020-02-15", "7500");
table.Rows.Add("E102", "Sarah Brown", "HR", "2019-07-10", "6800");
table.Rows.Add("E103", "Michael Davis", "IT", "2021-01-22", "8200");
table.Rows.Add("E104", "Laura Wilson", "Marketing", "2018-11-18", "7100");
table.Rows.Add("E105", "Daniel Lee", "Sales", "2022-06-12", "6900");
// DataTable をワークシートに挿入(1行1列目から、列名を保持)
sheet.InsertDataTable(table, true, 1, 1);
// 内蔵スタイルの適用
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading2; // ヘッダー行
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent2; // データ行
}
// 列幅と行高を自動調整
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();
ポイント:
-
InsertDataTableにより、DataTable の内容を直接ワークシートに書き込み、列名を保持できます。 - 内蔵スタイル(
BuiltInStyles)で簡単に表を装飾できます。例:ヘッダー行の太字、データ行の配色。 -
AutoFitColumnsとAutoFitRowsで列幅と行高を自動調整し、見やすい表にします。
3. 複数形式での保存
Spire.XLS は、次のような複数の保存形式に対応しています:
- XLS/XLSX:従来の Excel ファイル
- CSV:カンマ区切りテキスト
- PDF:印刷または配布用
- HTML / SVG:ウェブページやベクター形式
- XLSB/XLSM:バイナリまたはマクロ付き Excel ファイル
- MemoryStream:メモリ上に保存し、ネットワーク送信や二次処理に使用可能
サンプルコード:
// Excel 2016 形式で保存
workbook.SaveToFile("EmployeeData.xlsx", FileFormat.Version2016);
// CSV 形式で保存
workbook.SaveToFile("EmployeeData.csv", FileFormat.CSV);
// PDF 形式で保存
workbook.SaveToFile("EmployeeData.pdf", FileFormat.PDF);
// MemoryStream に保存
using (MemoryStream ms = new MemoryStream())
{
workbook.SaveToStream(ms, FileFormat.Version2016);
// ここで ms をデータベースに保存したり、HTTP レスポンスとして送信可能
}
補足:
-
FileFormat列挙体は、Xlsb2007、ODS、HTML、Markdownなど 25 種類以上に対応しています。 - MemoryStream を利用することで、Web アプリケーションで直接クライアントに返すことが可能です。
4. 作成結果のイメージ
生成される Excel ファイルの例:
ヘッダー行は太字、データ行は配色されており、列幅も自動調整されています。
5. 補足説明
-
コードでのエクスポートの利点
レポートの一括生成や動的データの処理では、手作業よりもコードでの生成が効率的で再利用可能です。 -
MemoryStream の活用シーン
- Web API でファイルをダウンロードさせる場合
- Excel をデータベースやクラウドストレージに保存する場合
- メモリ上で生成し、暗号化や圧縮などの二次処理を行う場合
-
多形式対応
Spire.XLS のFileFormat列挙体は、Excel、PDF、Web、テンプレートなど主要な形式をほぼ網羅しており、さまざまな業務ニーズに対応可能です。
6. まとめ
本記事では、Spire.XLS for .NET を使用して、以下を実現する方法を紹介しました:
- C# で Excel ファイルを作成し、データを入力する
- 内蔵スタイルを適用し、行列の自動調整
- XLSX、CSV、PDF、HTML など複数形式で保存
- MemoryStream を使用してネットワーク送信や二次処理に対応
Workbook、Worksheet、InsertDataTable、SaveToFile/SaveToStream を活用すれば、Excel データの自動生成と形式変換が容易になり、業務アプリケーションの開発効率が大幅に向上します。
