IronXLを使用してC#でASP.NET MVCでExcelファイルを読み取る

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL を使用すると、ASP.NET MVC 開発者は Microsoft Office に依存することなく、C# で Excel ファイルを直接読み込むことができます。わずか数行のコードで Excel データを System.Data.DataTable に変換し、Web ビューで簡単に表示できます。

クイックスタート: MVCでExcelシートをDataTableにロードして変換

この例では、わずか数秒で使い始める方法をご紹介します。Excel ワークブックを読み込み、最初のワークシートを選択し、IronXL を使用して System.Data.DataTable 形式に変換します。Interop も不要で、手間もかかりません。

  1. IronXL をNuGetパッケージマネージャでインストール

    PM > Install-Package IronXL.Excel
  2. このコード スニペットをコピーして実行します。

    var dataTable = IronXl.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronXL を使い始めましょう無料トライアル

    arrow pointer

Excel読み取り用のASP.NETプロジェクトを作成するにはどうすればよいですか?

なぜ Visual Studio 2022 が最適なのですか?

Visual Studio 2022を使用して、新しいASP.NETプロジェクトを作成します。 Visual Studio 2022は、.NET Framework 6+フレームワークに対する優れたサポート、IronXLメソッドに対するIntelliSenseの改良、および大規模なExcelファイルを扱う際のパフォーマンス向上を提供します。 このIDEのNuGet統合機能により、IronXLのインストールは特に簡単です。

どのプロジェクトテンプレートを選べばよいですか?

ASP.NETでExcelファイルを読むには、"ASP.NET Core Web App (Model-View-Controller)"テンプレートを選択してください。 このテンプレートは、データ処理(Excelの読み込み)とプレゼンテーション・ロジックを分離したクリーンなMVC構造を提供します。 MVCパターンは、DataTable変換と完璧に連携し、コントローラーでスプレッドシートを読み込み、ビューでシームレスに表示することを可能にします。

ど for .NETバージョンを推奨しますか?

IronXL は、.NET Framework 4.6.2 以降および .NET Core 3.1 以降で動作します。 新しいASP.NET MVCプロジェクトでは、パフォーマンスとセキュリティを最適化するために、.NET 6.0以上を使用してください。 これらのバージョンでは、大きなExcelファイルを処理する際のメモリ管理が改善され、スプレッドシートファイルタイプを変換する際の非同期/待機サポートが向上しています。

どのようにIronXLライブラリをインストールしますか?

インストール要件は何ですか?


どのインストール方法が最も速いですか?

新しいプロジェクトを作成した後、IronXLライブラリをインストールしてください。 IronXL をインストールするには、以下の手順に従ってください。 NuGetパッケージマネージャーコンソールを開き、次のコマンドを実行します。

Install-Package IronXL.Excel

どのようにインストールを確認できますか?

IronXLが正しくインストールされているか確認するには、ソリューション エクスプローラーでプロジェクトの依存関係を確認してください。 IronXL "は "Dependencies > Packages "にリストされています。 また、コントローラーファイルの先頭に using IronXL; を追加してみてください。IntelliSense がすぐに名前空間を認識するはずです。 インストールに関するトラブルシューティングについては、ライセンス ガイドをご覧ください。

コントローラで Excel ファイルを読むには?

コントローラアクションにはどのようなコードがありますか?

ASP.NET プロジェクトのデフォルトのコントローラー(例:Index メソッドを以下のコードに置き換えてください:

using IronXL;
using System.Data;

public ActionResult Index()
{
    // Load the Excel workbook from a specified path.
    WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");

    // Access the first worksheet from the workbook.
    WorkSheet workSheet = workBook.WorkSheets.First();

    // Convert the worksheet data to a DataTable object.
    // The 'true' parameter uses the first row as column headers
    var dataTable = workSheet.ToDataTable(true);

    // Send the DataTable to the view for rendering.
    return View(dataTable);
}
using IronXL;
using System.Data;

public ActionResult Index()
{
    // Load the Excel workbook from a specified path.
    WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");

    // Access the first worksheet from the workbook.
    WorkSheet workSheet = workBook.WorkSheets.First();

    // Convert the worksheet data to a DataTable object.
    // The 'true' parameter uses the first row as column headers
    var dataTable = workSheet.ToDataTable(true);

    // Send the DataTable to the view for rendering.
    return View(dataTable);
}
Imports IronXL
Imports System.Data

Public Function Index() As ActionResult
    ' Load the Excel workbook from a specified path.
    Dim workBook As WorkBook = WorkBook.Load("C:\Files\Customer Data.xlsx")

    ' Access the first worksheet from the workbook.
    Dim workSheet As WorkSheet = workBook.WorkSheets.First()

    ' Convert the worksheet data to a DataTable object.
    ' The 'true' parameter uses the first row as column headers
    Dim dataTable = workSheet.ToDataTable(True)

    ' Send the DataTable to the view for rendering.
    Return View(dataTable)
End Function
$vbLabelText   $csharpLabel

なぜ他の形式ではなく DataTable を使用するのですか?

Index アクションメソッド内で、IronXLLoad メソッドを使用して Excel ファイルを読み込みます。 Excelファイルのパス(ファイル名を含む)がメソッド呼び出しのパラメーターとして提供されます。 次に、最初のExcelシートを作業シートとして選択し、そこに含まれるデータをDataTableオブジェクトに読み込みます。 最後に、DataTableをフロントエンドに送信してください。

DataTableは、Razorビューとシームレスに統合され、行と列の反復処理を組み込みでサポートしているため、ASP.NET MVCに最適です。 カスタムオブジェクトとは異なり、DataTableはモデルマッピングを必要とせず、異なるデータ型を自動的に処理します。 また、必要に応じて DataSet および DataTable を Excel にエクスポートすることも可能です。

ファイルが見つからない場合のエラー処理はどうなりますか?

堅牢なエラー処理により、Excelファイルがなかったり破損していても、アプリケーションがクラッシュすることはありません。 以下は、適切な例外処理を施した強化版です:

public ActionResult Index()
{
    try
    {
        string filePath = @"C:\Files\Customer Data.xlsx";

        // Check if file exists before attempting to load
        if (!System.IO.File.Exists(filePath))
        {
            ViewBag.Error = "Excel file not found at specified location.";
            return View(new DataTable());
        }

        // Load workbook with error handling
        WorkBook workBook = WorkBook.Load(filePath);

        // Verify worksheet exists
        if (workBook.WorkSheets.Count == 0)
        {
            ViewBag.Error = "No worksheets found in the Excel file.";
            return View(new DataTable());
        }

        WorkSheet workSheet = workBook.WorkSheets.First();
        var dataTable = workSheet.ToDataTable(true);

        return View(dataTable);
    }
    catch (Exception ex)
    {
        // Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}";
        return View(new DataTable());
    }
}
public ActionResult Index()
{
    try
    {
        string filePath = @"C:\Files\Customer Data.xlsx";

        // Check if file exists before attempting to load
        if (!System.IO.File.Exists(filePath))
        {
            ViewBag.Error = "Excel file not found at specified location.";
            return View(new DataTable());
        }

        // Load workbook with error handling
        WorkBook workBook = WorkBook.Load(filePath);

        // Verify worksheet exists
        if (workBook.WorkSheets.Count == 0)
        {
            ViewBag.Error = "No worksheets found in the Excel file.";
            return View(new DataTable());
        }

        WorkSheet workSheet = workBook.WorkSheets.First();
        var dataTable = workSheet.ToDataTable(true);

        return View(dataTable);
    }
    catch (Exception ex)
    {
        // Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}";
        return View(new DataTable());
    }
}
Imports System.IO
Imports System.Data

Public Function Index() As ActionResult
    Try
        Dim filePath As String = "C:\Files\Customer Data.xlsx"

        ' Check if file exists before attempting to load
        If Not File.Exists(filePath) Then
            ViewBag.Error = "Excel file not found at specified location."
            Return View(New DataTable())
        End If

        ' Load workbook with error handling
        Dim workBook As WorkBook = WorkBook.Load(filePath)

        ' Verify worksheet exists
        If workBook.WorkSheets.Count = 0 Then
            ViewBag.Error = "No worksheets found in the Excel file."
            Return View(New DataTable())
        End If

        Dim workSheet As WorkSheet = workBook.WorkSheets.First()
        Dim dataTable = workSheet.ToDataTable(True)

        Return View(dataTable)
    Catch ex As Exception
        ' Log the exception (consider using a logging framework)
        ViewBag.Error = $"Error reading Excel file: {ex.Message}"
        Return View(New DataTable())
    End Try
End Function
$vbLabelText   $csharpLabel

異なるワークシートを選択するにはどうすればよいですか?

IronXL では、特定のワークシートを選択して操作するための複数の方法が用意されています。 インデックスや名前でワークシートにアクセスしたり、利用可能なすべてのシートを繰り返し表示したりすることができます:

// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");

// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];

// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;

// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    // Process each worksheet
}
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");

// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];

// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;

// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
    string sheetName = sheet.Name;
    // Process each worksheet
}
' Method 1: Select by worksheet name
Dim namedSheet As WorkSheet = workBook.GetWorkSheet("Sales Data")

' Method 2: Select by index (zero-based)
Dim secondSheet As WorkSheet = workBook.WorkSheets(1)

' Method 3: Select the default/active worksheet
Dim defaultSheet As WorkSheet = workBook.DefaultWorkSheet

' Method 4: Iterate through all worksheets
For Each sheet As WorkSheet In workBook.WorkSheets
    Dim sheetName As String = sheet.Name
    ' Process each worksheet
Next
$vbLabelText   $csharpLabel

ExcelデータをWebページに表示するには?

どのようなビューコードが必要ですか?

次の例では、前の例で返された DataTable を Web ブラウザに表示する方法を示します。

この例で使用されているExcelファイルを以下に示します:

Excel spreadsheet with customer names, shipping costs, and unit prices - sample data for web display tutorial

Excelファイル

index.cshtml(インデックスビュー)を開き、コードを以下のHTMLコードに置き換えてください:

@{
    ViewData["Title"] = "Home Page";
}

@using System.Data
@model DataTable

<div class="text-center">
    <h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>

@* Check for errors first *@
@if (ViewBag.Error != null)
{
    <div class="alert alert-danger">
        @ViewBag.Error
    </div>
}

@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>No data to display.</p>
}
@{
    ViewData["Title"] = "Home Page";
}

@using System.Data
@model DataTable

<div class="text-center">
    <h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>

@* Check for errors first *@
@if (ViewBag.Error != null)
{
    <div class="alert alert-danger">
        @ViewBag.Error
    </div>
}

@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
else
{
    <p>No data to display.</p>
}
$vbLabelText   $csharpLabel

テーブルのスタイリングにBootstrapを使用する理由

上記のコードは、DataTableをモデルとして使用しています。 表の各行は、装飾用のBootstrapフォーマットを含め、@forループを使用してWebページに出力されます。

Bootstrapは、さまざまな画面サイズに自動的に調整するレスポンシブなテーブルデザインを提供します。 table-dark クラスは、読みやすい魅力的なダークテーマのテーブルを作成します。 セルの境界線や配置背景のパターンや色といった、より高度な Excel の書式設定については、IronXL が構造化データに直接アクセスするための追加メソッドを提供しています。

最終的なアウトプットはどのようになりますか?

プロジェクトを実行すると、以下のような結果が得られます:

Bootstrap table displaying Excel customer data with names, shipping costs, and unit prices in ASP.NET MVC application

ブートストラップテーブル

テーブルにヘッダーを追加するにはどうすればよいですか?

Excelファイルから列ヘッダーを表示するには、テーブルヘッダーセクションを含むようにビューコードを修正してください。 ToDataTable(true) を呼び出すと、IronXL は自動的に最初の行を列名として使用します:

@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <thead>
            <tr>
                @foreach (DataColumn column in Model.Columns)
                {
                    <th>@column.ColumnName</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
@if (Model != null && Model.Rows.Count > 0)
{
    <table class="table table-dark">
        <thead>
            <tr>
                @foreach (DataColumn column in Model.Columns)
                {
                    <th>@column.ColumnName</th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (DataRow row in Model.Rows)
            {
                <tr>
                    @for (int i = 0; i < Model.Columns.Count; i++)
                    {
                        <td>@row[i]</td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
$vbLabelText   $csharpLabel

この機能強化により、Excel ファイル内の"顧客名"、"送料"、"単価"などの適切な列ヘッダーが表示されます。名前付き範囲名前付きテーブルを含むより複雑なシナリオについては、IronXL が構造化データに直接アクセスするための追加メソッドを提供します。

よくある質問

Microsoft OfficeなしでASP.NET MVCでExcelファイルを読むにはどうすればよいですか?

IronXLはMicrosoft Officeに依存することなく、C#で直接Excelファイルを読み込むことができます。NuGet経由でIronXLをインストールし、WorkBook.Load()を使ってExcelファイルを開き、たった1行のコードでDataTableに変換するだけです: var dataTable = IronXl.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);

ASP.NETでExcelデータをDataTableに変換する最速の方法は何ですか?

IronXLはExcelワークシートをSystem.Data.DataTableオブジェクトに変換するToDataTable()メソッドを提供します。IronXLでワークブックをロードした後、任意のワークシートにアクセスし、ToDataTable(true)を呼び出してヘッダーを含めます。この変換は1行のコードで済み、ASP.NET MVCビューとシームレスに動作します。

WebアプリケーションでExcelファイルを処理するには、ど for .NETバージョンを使用すればよいですか?

IronXLは.NET Framework 4.6.2+と.NET Core 3.1+をサポートしています。新しいASP.NET MVCプロジェクトでは、.NET 6.0以上を推奨します。.NET 6.0では、IronXLで大きなExcelファイルを処理する際のメモリ管理が改善され、スプレッドシート操作の非同期/待機サポートが向上しています。

Excelの読み取り機能に最適なVisual Studioプロジェクトテンプレートは?

プロジェクトを作成するときは、'ASP.NET Core Web App (Model-View-Controller)'テンプレートを選択してください。このMVC構造はIronXLのDataTable変換機能を完全に補完し、ビューでデータをきれいに表示しながら、コントローラでExcelファイルを読み込んで処理することを可能にします。

ASP.NETプロジェクトにExcel読み取りライブラリをインストールする方法を教えてください。

NuGetパッケージマネージャーコンソールから'Install-Package IronXL.Excel'を実行してIronXLをインストールする。インストール後、プロジェクトの依存関係をチェックし、コントローラにusing IronXL;'を追加することで、IronXLが正しく追加されていることを確認する。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 2,041,325 | バージョン: 2026.6 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronXL.Excel
サンプルを実行する あなたのデータがスプレッドシートになるのを見る。