チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.XLS for .NET»文書操作»C# で Excel ファイルを作成・出力する方法(.NET / ASP.NET 対応)
2025-07-11

C# で Excel ファイルを作成・出力する方法(.NET / ASP.NET 対応)

C# で Excel ファイルを作成する流れ

C# による Excel ファイルの生成は、レポートシステムの構築、構造化データの出力、Excel ベースの業務自動化において非常に一般的な作業です。デスクトップアプリ、ASP.NET Core Web API、クロスプラットフォームアプリなど、どのような .NET プロジェクトでも、コードで .xlsx ファイルを生成することで、データ処理と連携を大幅に効率化できます。

本記事では、Spire.XLS for .NET(Excel を操作できる単体のライブラリ)を使用して、.NET 環境で Excel ファイルを作成する方法を紹介します。デスクトップアプリ、ASP.NET Web サービス、バックグラウンド処理など、さまざまな場面で活用可能です。ワークブックの新規作成、DataTable のエクスポート、サーバーサイドでの生成、書式や数式の適用といった主要機能を、実用的なコード例とともに解説します。

目次

開発環境の準備

Spire.XLS for .NET は、Microsoft Office をインストールせずに .xls.xlsx ファイルをコードのみで作成できる軽量なライブラリです。COM 依存もないため、Web サーバーやクラウドアプリ、マイクロサービス環境に最適です。

NuGet パッケージマネージャーから簡単に導入できます:

Install-Package Spire.XLS

軽量用途には無料版の Free Spire.XLS for .NET も利用可能です:

Install-Package FreeSpire.XLS

C# で Excel ファイルの新規作成

小規模なデータ出力やテンプレートの生成には、C# コードで Excel ファイルを新規作成するのが効率的です。レイアウトや内容を柔軟に制御できます。

以下は、テキストと数値を含む基本的なワークシートを作成する例です:

using Spire.Xls;

// 新しいワークブックとワークシートを作成
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "概要";

// ヘッダーとデータを入力
// セル名でアクセス
sheet.Range["A1"].Text = "従業員";
sheet.Range["B1"].Text = "部署";
sheet.Range["C1"].Text = "給与";

// 行と列でアクセス
sheet.Range[2, 1].Text = "山田太郎";
sheet.Range[2, 2].Text = "人事部";
sheet.Range[2, 3].NumberValue = 650000;

sheet.Range[3, 1].Text = "佐藤花子";
sheet.Range[3, 2].Text = "情報システム部";
sheet.Range[3, 3].NumberValue = 720000;

// スタイルを適用
CellStyle headerStyle = workbook.Styles.Add("Header");
headerStyle.Font.IsBold = true;
sheet.Range["A1:C1"].Style = headerStyle;
sheet.Range.Style.Font.FontName = "Yu Gothic UI";

// 列の幅を自動調整
sheet.Range.AutoFitColumns();

// ファイルを保存
workbook.SaveToFile("BasicExcel.xlsx", ExcelVersion.Version2016);
workbook.Dispose();

生成されたExcelファイル: C# で作成した従業員情報の Excel ワークシート

この方法は Excel がインストールされていない環境でも動作し、簡単なデータ出力や設定ファイルの作成に最適です。

C# で DataTable を Excel に出力

データベースや API からの取得結果をそのまま Excel に出力したい場合、DataTable を使うのが一般的です。Spire.XLS を使えば、1 行ずつループすることなく、構造化されたデータをワークシートに簡単に取り込めます。

以下は、DataTable の内容をワークシートに取り込むサンプルです:

using System.Data;
using Spire.Xls;

// データテーブルを作成(シミュレーション)
DataTable dt = new DataTable("商品一覧");
dt.Columns.Add("商品名", typeof(string));
dt.Columns.Add("価格", typeof(double));
dt.Columns.Add("在庫数", typeof(int));

dt.Rows.Add("ノートパソコン", 129800, 20);
dt.Rows.Add("モニター", 19800, 50);
dt.Rows.Add("マウス", 2480, 150);

// Excel にインポート
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "在庫管理";
sheet.InsertDataTable(dt, true, 1, 1);

// 列幅を調整
sheet.AllocatedRange.ColumnWidth = 15;

// ファイルを保存
workbook.SaveToFile("InventoryReport.xlsx", ExcelVersion.Version2016);
workbook.Dispose();

生成されたExcelファイル:

C# で DataTable を Excel にエクスポートした例

この手法は、在庫リスト、売上レポート、分析結果などの出力に広く活用されています。

関連情報:DataTable と Excel の相互変換方法(C#)

C# で Excel に書式設定と数式を適用

見やすくプロフェッショナルな Excel ファイルを作成するためには、データの出力に加えて、セルの書式設定や数式の挿入も重要です。C# と Spire.XLS を使えば、文字の色・太字・罫線・通貨形式・計算式などを自由に設定できます。

以下の例では、ヘッダー行のスタイル設定、通貨形式の適用、計算式の挿入、交互に背景色を変える処理を紹介しています:

using Spire.Xls;
using System.Drawing;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "売上レポート";

// ヘッダーラベルを設定
sheet.Range["A1"].Text = "商品名";
sheet.Range["B1"].Text = "単価";
sheet.Range["C1"].Text = "数量";
sheet.Range["D1"].Text = "合計";

// サンプルデータを追加
string[,] items = {
    { "ボールペン", "150", "10" },
    { "ノート", "375", "5" },
    { "消しゴム", "99", "20" }
};

for (int i = 0; i < items.GetLength(0); i++)
{
    int row = i + 2;
    sheet.Range[$"A{row}"].Text = items[i, 0];
    sheet.Range[$"B{row}"].NumberValue = double.Parse(items[i, 1]);
    sheet.Range[$"C{row}"].NumberValue = double.Parse(items[i, 2]);
    sheet.Range[$"D{row}"].Formula = $"=B{row}*C{row}";
}

// スタイル:ヘッダー行
CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
headerStyle.Font.IsBold = true;
headerStyle.Font.Color = Color.White;
headerStyle.Font.Size = 12;
headerStyle.Font.FontName = "Yu Gothic UI";
headerStyle.KnownColor = ExcelColors.DarkBlue;
headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
headerStyle.VerticalAlignment = VerticalAlignType.Center;
headerStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thick;
headerStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thick;
sheet.Range["A1:D1"].Style = headerStyle;

// スタイル:データセル
CellStyle dataStyle = workbook.Styles.Add("DataStyle");
dataStyle.Font.FontName = "Yu Gothic UI";
dataStyle.NumberFormat = "\"¥\"#,##0";  // 円形式で小数なし
dataStyle.HorizontalAlignment = HorizontalAlignType.Right;
dataStyle.VerticalAlignment = VerticalAlignType.Center;
dataStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
dataStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

// 単価・数量・合計列にスタイルを適用
sheet.Range["B2:D4"].Style = dataStyle;

// 任意:交互行の背景色を変更して読みやすく
for (int r = 2; r <= 4; r++)
{
    if (r % 2 == 0)
        sheet.Range[$"A{r}:D{r}"].Style.KnownColor = ExcelColors.LightYellow;
}

// 列幅と行の高さを調整
sheet.AllocatedRange.ColumnWidth = 10;
sheet.AllocatedRange.RowHeight = 20;

// ファイルを保存
workbook.SaveToFile("styled.xlsx", FileFormat.Version2016);
workbook.Dispose();

作成されたExcelファイル:

C# で書式と数式を含む Excel レポートの例

売上明細や会計帳簿など、視認性と自動集計が求められるシーンに最適です。

より高度な数値フォーマットについては、こちらをご覧ください: Excel セルの数値フォーマットを設定する方法(C#/VB.NET)

ASP.NET Core で Excel ファイルを生成

ASP.NET Core(.NET 6/7/8)を使用した Web アプリでは、ダッシュボードや管理画面で Excel 出力機能がよく利用されます。

以下のサンプルでは、Razor Pages を使用してサーバー側で Excel ファイルを生成し、HTTP 応答としてダウンロードさせる方法を紹介しています:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Xls;
using System.Data;

public class ExportModel : PageModel
{
    public IActionResult OnGet()
    {
        // 専門的なデータをシミュレート:プロジェクト進捗レポート
        DataTable dt = new DataTable("プロジェクト進捗");
        dt.Columns.Add("プロジェクトID", typeof(string));
        dt.Columns.Add("プロジェクト名", typeof(string));
        dt.Columns.Add("担当者", typeof(string));
        dt.Columns.Add("開始日", typeof(DateTime));
        dt.Columns.Add("予定完了日", typeof(DateTime));
        dt.Columns.Add("進捗状況", typeof(string));
        dt.Columns.Add("ステータス", typeof(string));

        dt.Rows.Add("PRJ001", "スマート倉庫システム", "張 強", new DateTime(2024, 3, 1), new DateTime(2024, 9, 30), "65%", "進行中");
        dt.Rows.Add("PRJ002", "企業ポータルサイトのアップグレード", "李 華", new DateTime(2024, 5, 10), new DateTime(2024, 7, 15), "100%", "完了");
        dt.Rows.Add("PRJ003", "データガバナンスプラットフォーム構築", "王 敏", new DateTime(2024, 6, 1), new DateTime(2024, 12, 31), "30%", "遅延");

        // Excel ワークブックとワークシートを作成
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.Worksheets[0];
        sheet.Name = "プロジェクト進捗レポート";

        // テーブル(ヘッダー付き)を挿入
        sheet.InsertDataTable(dt, true, 1, 1);

        // ヘッダースタイルを設定
        CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
        headerStyle.Font.IsBold = true;
        headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
        headerStyle.VerticalAlignment = VerticalAlignType.Center;
        sheet.Rows[0].Style = headerStyle;

        sheet.Range.Style.Font.FontName = "Yu Gothic UI";

        // 列幅を自動調整
        sheet.AllocatedRange.AutoFitColumns();

        // メモリストリームに保存
        using var stream = new MemoryStream();
        workbook.SaveToStream(stream, FileFormat.Version2016);
        stream.Position = 0;

        // ファイルを返す
        return File(stream.ToArray(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "プロジェクト進捗レポート.xlsx");
    }
}

エクスポートされたExcelファイル:

ASP.NET Core で生成した進捗レポートの Excel ファイル C#

このアプローチは、社内ポータル、業務ツール、データ出力 API などに幅広く活用できます。

  • ✅ 対応:ASP.NET Core 3.1、.NET 5、6、7、8
  • ✅ 対象:Razor Pages、MVC、API エンドポイントなど

ASP.NET Web Forms で Excel ファイルを生成

従来の ASP.NET Web Forms を利用している場合でも、Spire.XLS を使えばサーバーサイドで Excel ファイルを動的に生成し、クライアントに直接ダウンロードさせることが可能です。ファイルをディスクに保存する必要はありません。

以下は Web Forms アプリでの実装例です:

using Spire.Xls;
using System;
using System.IO;

namespace YourNamespace
{
    public partial class Default : System.Web.UI.Page
    {
        protected void btnExport_Click(object sender, EventArgs e)
        {
            // Excel ファイルを作成し、ダウンロードとして出力
            Workbook workbook = new Workbook();
            Worksheet sheet = workbook.Worksheets[0];
            sheet.Name = "ユーザー一覧";

            // ヘッダー
            string[] headers = { "ユーザーID", "氏名", "所属部署", "入社日" };
            for (int i = 0; i < headers.Length; i++)
            {
                sheet.Range[1, i + 1].Text = headers[i];
                sheet.Range[1, i + 1].Style.Font.IsBold = true;
            }

            // サンプルデータ
            string[,] data = {
                { "U001", "佐藤 美咲", "人事部", "2023-01-15" },
                { "U002", "山本 健太", "情報システム部", "2022-11-03" }
            };

            // データを入力
            for (int r = 0; r < data.GetLength(0); r++)
                for (int c = 0; c < data.GetLength(1); c++)
                    sheet.Range[r + 2, c + 1].Text = data[r, c];

            // 列幅を自動調整
            sheet.Range.Style.Font.FontName = "Yu Gothic UI";
            sheet.AllocatedRange.AutoFitColumns();

            // ブラウザでダウンロードさせる
            using (MemoryStream ms = new MemoryStream())
            {
                workbook.SaveToStream(ms, FileFormat.Version2016);
                byte[] bytes = ms.ToArray();
                Response.Clear();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("Content-Disposition", "attachment; filename=ユーザー一覧.xlsx");
                Response.BinaryWrite(bytes);
                Response.End();
            }
        }
    }
}

エクスポートされたExcelファイル:

ASP.NET Web Forms で生成したユーザー情報の Excel ファイル C#

Excel ファイルを即時出力できるため、社内システムや業務アプリに便利な仕組みです。

よくある質問(FAQ)

Q. C# で Excel ファイルを作成するには? Spire.XLS などのライブラリを使うことで、Office をインストールせずに Excel ファイルを作成・保存できます。

Q. データを Excel にエクスポートするには? DataTable をワークシートに読み込んで保存すれば簡単にエクスポートできます。列ヘッダーや書式も自動設定されます。

Q. ASP.NET で Excel ファイルを生成するには? ASP.NET Core ではファイルをメモリ上で作成し、HTTP 応答として返します。Web Forms では Response.BinaryWrite() を使用して出力できます。

Q. Spire.XLS は .NET Core に対応していますか? はい。Spire.XLS は .NET Core 3.1、.NET 5、.NET 6、.NET 7、.NET 8 に対応しており、クロスプラットフォーム開発にも利用できます。

まとめ

Spire.XLS for .NET を使用すれば、C# で簡単かつ柔軟に Excel ファイルを作成できます。デスクトップアプリ、ASP.NET Core、Web Forms、バッチ処理など、あらゆる .NET 環境に対応しています。

DataTable のエクスポート、書式付きレポートの生成、自動化された出力処理など、本記事で紹介した方法を活用すれば、Excel 出力機能をすぐに実装できます。

👉 無料の一時ライセンスを申請 して、すべての機能を試用し、評価版の制限を解除しましょう。

Read 27 times