ASP.NET MVC で C# を使って Excel ファイルを読み込む: xlsxファイル対応 Excel操作 C# ガイド
IronXLはASP.NET MVC開発者がMicrosoft Officeに依存することなくC#でxlsxファイルを直接読み込み、ExcelデータをSystem.Data.DataTableに変換し、わずか数行のコードでWebビューに簡単に表示できるようにします。
クイックスタート: ExcelシートをMVCでDataTableにロードして変換する
この例では、Excelワークブックを読み込み、最初のワークシートを選択し、IronXLを使用してSystem.Data.DataTableに変換します。
- ASP.NET で Excel ファイルを読み取るための C# ライブラリをインストールする
- Excelファイルで対象のシートをロードしアクセスする
ToDataTableメソッドにアクセスし、Viewに返します。- ループを使ってExcelデータをWebページに表示する
- すべてのデータを反復処理し、HTMLテーブルを作成する。
Excel読み取り用のASP.NETプロジェクトを作成するにはどうすればよいですか?
なぜ Visual Studio 2022 が最適なのですか?
Visual Studio 2022を使用して、新しいASP.NETプロジェクトを作成します。 Visual Studio 2022では、.NET 6+フレームワークの優れたサポート、IronXLメソッドのインテリセンスの改善、大きなExcelファイルを扱う際のパフォーマンスの向上が図られています。 IDEのNuGet統合により、IronXLのインストールは特に簡単です。
どのプロジェクトテンプレートを選べばよいですか?
ASP.NETでExcelファイルを読むには、"ASP.NET Core Web App (Model-View-Controller)"テンプレートを選択してください。 このテンプレートは、データ処理(Excelの読み込み)とプレゼンテーション・ロジックを分離したクリーンなMVC構造を提供します。 MVCパターンは、IronXLのDataTable変換と完全に連動しており、コントローラでスプレッドシートを読み込み、ビューでシームレスに表示することができます。
どの.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;を追加してみてください。 インストールに関するトラブルシューティングについては、ライセンス ガイドをご覧ください。
コントローラで Excel ファイルを読むには?
コントローラアクションにはどのようなコードがありますか?
ASP.NETプロジェクトのデフォルトのコントローラ(例えば、HomeController.cs)を開き、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
なぜ他の形式ではなくDataTableを使うのですか
Indexアクションメソッドで、IronXLのLoadメソッドを使用して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
異なるワークシートを選択するにはどうすればよいですか?
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
ExcelデータをWebページに表示するには?
どのようなビューコードが必要ですか?
次の例では、前の例で返されたDataTableをWebブラウザで表示する方法を示します。
この例で使用されているExcelファイルを以下に示します:
Excelファイル
index.cshtml(インデックス・ビュー)を開き、コードを次のHTMLコードに置き換えてください:
@{
ViewData["Title"] = "Home Page";
}
@using System.Data
@model DataTable
<div class="text-center">
<h1>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>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>
}
テーブルのスタイリングにBootstrapを使用する理由
上記のコードは、Indexメソッドから返されたDataTableをモデルとして使用します。 @forループを使用してテーブルの各行をウェブページに印刷し、装飾のためにBootstrapフォーマットを含めます。
Bootstrapは、さまざまな画面サイズに自動的に調整するレスポンシブなテーブルデザインを提供します。 table-darkクラスは、読みやすい魅力的な暗いテーマの表を作成します。 セルの境界線と配置や背景のパターンと色のような、より高度なExcelの書式設定のために、IronXLは、構造化データに直接アクセスするための追加のメソッドを提供します。
最終的なアウトプットはどのようになりますか?
プロジェクトを実行すると、以下のような結果が得られます:
ブートストラップテーブル
テーブルにヘッダーを追加するにはどうすればよいですか?
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>
}
この機能拡張により、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が正しく追加されていることを確認する。

