0
0

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# を使って Excel データをエクスポートし、複数形式で保存する方法

Posted at

現代の企業における情報管理では、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)で簡単に表を装飾できます。例:ヘッダー行の太字、データ行の配色。
  • AutoFitColumnsAutoFitRows で列幅と行高を自動調整し、見やすい表にします。

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 列挙体は、Xlsb2007ODSHTMLMarkdown など 25 種類以上に対応しています。
  • MemoryStream を利用することで、Web アプリケーションで直接クライアントに返すことが可能です。

4. 作成結果のイメージ

生成される Excel ファイルの例:

C#でExcel保存

ヘッダー行は太字、データ行は配色されており、列幅も自動調整されています。

5. 補足説明

  1. コードでのエクスポートの利点
    レポートの一括生成や動的データの処理では、手作業よりもコードでの生成が効率的で再利用可能です。

  2. MemoryStream の活用シーン

    • Web API でファイルをダウンロードさせる場合
    • Excel をデータベースやクラウドストレージに保存する場合
    • メモリ上で生成し、暗号化や圧縮などの二次処理を行う場合
  3. 多形式対応
    Spire.XLS の FileFormat 列挙体は、Excel、PDF、Web、テンプレートなど主要な形式をほぼ網羅しており、さまざまな業務ニーズに対応可能です。

6. まとめ

本記事では、Spire.XLS for .NET を使用して、以下を実現する方法を紹介しました:

  • C# で Excel ファイルを作成し、データを入力する
  • 内蔵スタイルを適用し、行列の自動調整
  • XLSX、CSV、PDF、HTML など複数形式で保存
  • MemoryStream を使用してネットワーク送信や二次処理に対応

WorkbookWorksheetInsertDataTableSaveToFile/SaveToStream を活用すれば、Excel データの自動生成と形式変換が容易になり、業務アプリケーションの開発効率が大幅に向上します。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?