チュートリアル

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

チュートリアル».NET»Spire.XLS for .NET»データのインポート/エクスポート»C# で List を Excel にエクスポートする方法(Interop 不使用)
2026-02-11

C# で List を Excel にエクスポートする方法(Interop 不使用)

C# で Interop を使わずに List を Excel にエクスポートするチュートリアル

C# を使用してリストデータを Excel にエクスポートすることは、現代の .NET アプリケーションにおいて一般的な要件です。デスクトップアプリケーション、Web システム、バックグラウンドサービスのいずれを開発する場合でも、開発者はメモリ上のコレクション、特に List<T> を、ユーザーがダウンロード・分析・共有できる構造化された Excel ファイルに変換する必要があります。

本チュートリアルでは、Spire.XLS for .NET を使用し、Excel Interop を使わずに C# でオブジェクトのリストを Excel にエクスポートする方法を解説します。本ソリューションは .NET Core および最新の .NET バージョンに完全対応しており、一般的な業務データモデルで利用でき、Microsoft Excel のインストールも不要です。

目次

なぜ Excel Interop を使用せずに C# で List を Excel にエクスポートするのか

リストデータを Excel にエクスポートすることは、構造化された情報を、広く利用されている分かりやすい形式で提供する有効な方法です。実際の業務では、次のような場面でよく利用されます。

  • 業務レポートや財務レポートの作成
  • Web アプリケーションで検索結果をダウンロード可能にする
  • 非技術系の関係者とデータを共有する
  • Excel を使用したオフライン分析や監査

従来、多くの開発者は Excel ファイルの生成に Excel Interop を使用してきました。しかし、Interop には以下のような制約があります。

  • 実行環境に Microsoft Excel がインストールされている必要がある
  • サーバーサイドや ASP.NET Core アプリケーションでの利用は推奨されない
  • 単純なエクスポート処理に対して依存関係が重い

このため、近年の .NET アプリケーションでは、Interop を使用しない Excel エクスポートが主流となっています。Spire.XLS for .NET のようなライブラリを使用すれば、Microsoft Office に依存することなく、List<T> を直接 Excel ファイルとして安全かつ確実に出力できます。

C# でオブジェクトの List を Excel にエクスポートする

実際のアプリケーションでは、単純な値ではなく、業務オブジェクトのリストとしてデータを扱うことがほとんどです。本セクションでは、現実的な帳票出力シナリオを想定し、再利用可能で Interop に依存しない方法で List<T> を Excel にエクスポートする手順を説明します。

事前準備

リストを Excel にエクスポートする前に、プロジェクトに Spire.XLS for .NET をインストールしてください。

NuGet から次のコマンドでインストールできます。

Install-Package Spire.XLS

インストール後、追加の設定なしで List<T> の Excel 出力を開始できます。

エクスポート処理の流れ

オブジェクトのリストを Excel にエクスポートする基本的な流れは、次のとおりです。

  1. 業務データを List<T> として準備する
  2. Excel のワークブックとワークシートを作成する
  3. オブジェクトのプロパティから列見出しを動的に生成する
  4. リストデータを行として書き込む
  5. Excel ファイルを保存する

以下のサンプルでは、これらの処理をすべて含めた実装例を示します。

完全なサンプル:List を Excel にエクスポート

using Spire.Xls;
using System;
using System.Collections.Generic;
using System.Reflection;

public class OrderReport
{
    public int OrderId { get; set; }
    public string CustomerName { get; set; }
    public DateTime OrderDate { get; set; }
    public decimal TotalAmount { get; set; }
    public string Status { get; set; }
}

class Program
{
    static void Main()
    {
        // サンプル業務データの準備
        List<OrderReport> orders = new List<OrderReport>
        {
            new OrderReport { OrderId = 20240101, CustomerName = "サンプル株式会社A", OrderDate = new DateTime(2024, 1, 5),  TotalAmount = 1250000m, Status = "完了" },
            new OrderReport { OrderId = 20240102, CustomerName = "テスト法人B",       OrderDate = new DateTime(2024, 1, 8),  TotalAmount = 860000m,  Status = "処理中" },
            new OrderReport { OrderId = 20240103, CustomerName = "デモ企業C",         OrderDate = new DateTime(2024, 1, 12), TotalAmount = 430500m,  Status = "キャンセル" }
        };


        // ワークブックとワークシートを作成
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.Worksheets[0];

        // リフレクションでプロパティ情報を取得
        PropertyInfo[] properties = typeof(OrderReport).GetProperties();

        // 列見出しを書き込み
        for (int i = 0; i < properties.Length; i++)
        {
            sheet.Range[1, i + 1].Text = properties[i].Name;
        }

        // データ行を書き込み
        for (int row = 0; row < orders.Count; row++)
        {
            for (int col = 0; col < properties.Length; col++)
            {
                object value = properties[col].GetValue(orders[row]);
                sheet.Range[row + 2, col + 1].Value2 = value;
            }
        }

        // Excel ファイルを保存
        workbook.SaveToFile("OrderReport.xlsx", ExcelVersion.Version2016);
    }
}

生成された Excel ファイルのプレビューは次のとおりです。

Spire.XLS for .NET を使用した C# の List から Excel への出力例

技術的なポイントと実装の補足

  • Workbook を生成し、workbook.Worksheets[0] で最初のワークシートを取得します
  • リフレクション(Type.GetProperties)を使用して列見出しを動的に生成し、ハードコードを回避します
  • 見出し行は Range.Text を使用して、1 行目に文字列として出力します
  • 各オブジェクトの値は Range.Value2 を使用し、Excel 本来のデータ型を保持したまま書き込みます
  • Workbook.SaveToFile を使用してExcelファイルを生成します

この実装パターンは、再利用可能なエクスポート処理や帳票生成機能の構築に適しています。

なお、List<T> ではなく DataTable としてデータを取得する場合も、Spire.XLS for .NET には効率的なエクスポート手段が用意されています。詳細は C# で DataTable を Excel にエクスポートする方法 を参照してください。

エクスポートした Excel ワークシートの書式設定

Spire.XLS for .NET では、基本的なデータ出力に加えて、Excel ファイルの可読性や実用性を高めるための書式設定も行えます。

代表的な書式設定には、次のようなものがあります。

  • 見出し行のスタイル設定
  • 日付や数値の表示形式の指定
  • 列幅の自動調整
  • セル内のフォント設定

例:基本的な書式設定を適用する

using System.Drawing;

// 見出し行の書式設定
CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
headerStyle.Font.FontName = "Yu Gothic UI";
headerStyle.Font.Size = 12f;
headerStyle.Font.IsBold = true;
headerStyle.Color = Color.LightGray;
headerStyle.HorizontalAlignment = HorizontalAlignType.Center;

sheet.Range[1, 1, 1, sheet.LastColumn].Style = headerStyle;

// 日付列と金額列の表示形式を設定
sheet.Range[2, 3, orders.Count + 1, 3].NumberFormat = "yyyy-mm-dd";
sheet.Range[2, 4, orders.Count + 1, 4].NumberFormat = "#,##0.00";

// 行の高さと列幅を自動調整
sheet.AllocatedRange.AutoFitRows();
sheet.AllocatedRange.AutoFitColumns();

書式設定後の Excel シートのプレビューは以下のとおりです。

Spire.XLS for .NET を使用した C# の Excel 書式設定例

書式を適用することで、生成された Excel ファイルはより業務向けで、そのまま利用可能な品質になります。

スタイル設定、セル結合、条件付き書式、数式など、より高度な操作については、C# で Excel ワークシートを作成・書式設定する方法 を参照してください。

.NET Core およびサーバーサイドでの互換性

Spire.XLS for .NET は .NET Core および最新の .NET バージョンに完全対応しており、以下のような環境で利用できます。

  • ASP.NET Core Web アプリケーション
  • Web API
  • クラウド環境やコンテナ環境
  • バックグラウンドサービスや定期実行ジョブ

Excel Interop に依存しないため、サーバーサイドや本番環境でも安全に利用できます。

ASP.NET Core や Web API プロジェクトで Excel ファイルを生成し、クライアントへ返却する方法については、次の記事を参照してください。 C# を使用して ASP.NET Core で Excel ファイルをエクスポートする


まとめ

C# で List を Excel にエクスポートする処理は、Excel Interop に依存する必要はありません。Spire.XLS for .NET を使用すれば、List<T> を構造化された Excel ファイルへ効率的に変換でき、.NET Framework と .NET Core の両環境で安定して動作します。

Interop を使用しないことで、デプロイの複雑さを軽減し、アプリケーションの安定性を向上させ、業務データのエクスポートにおける柔軟性も高まります。

複雑な帳票からシンプルなリスト出力まで、Spire.XLS は現代的な C# アプリケーションに適した、信頼性と拡張性の高いソリューションです。評価目的や試用制限の解除には、30 日間の一時ライセンス を利用できます。


よくある質問

Q1. 大量の List データも効率的にエクスポートできますか?

はい。Spire.XLS for .NET はサーバーサイド利用を前提として設計されており、大規模な List<T> データも効率的に処理できます。さらに大量の場合は、バッチ処理や分割出力によってパフォーマンスを向上させることが可能です。

Q2. Microsoft Excel のインストールは必要ですか?

いいえ。Spire.XLS for .NET は Microsoft Excel に依存せず、Excel Interop も使用しないため、サーバー環境やクラウド環境でも利用できます。

Q3. 列見出しや表示形式をカスタマイズできますか?

はい。列見出しは手動でカスタマイズでき、日付・数値・スタイルなどの書式もプログラムから指定できます。高度な書式設定については、C# Excel 書式設定ガイド を参照してください。

Q4. ASP.NET Core や Web API でも利用できますか?

はい。本エクスポート処理は ASP.NET Core、Web API、バックグラウンドサービスなど、あらゆるサーバーサイドの .NET 環境で問題なく動作します。

Read 17 times