使用 IronXL 在 ASP.NET MVC 中使用 C# 讀取 Excel 文件
IronXL 讓 ASP.NET MVC 開發人員能夠直接在 C# 中讀取 Excel 文件,而無需依賴 Microsoft Office,只需幾行程式碼即可將 Excel 資料轉換為System.Data.DataTable ,以便在 Web 視圖中輕鬆顯示。
快速入門:在 MVC 中載入 Excel 表格並將其轉換為 DataTable
本範例展示如何在幾秒鐘內快速入門:載入一個 Excel 工作簿,選擇其第一個工作表,然後使用 IronXL 將其轉換為System.Data.DataTable無需互操作,輕鬆便捷。
立即開始使用 NuGet 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 IronXL
複製並運行這段程式碼。
var dataTable = IronXL.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);部署到您的生產環境進行測試
最簡工作流程(5個步驟)
- 安裝 C# 程式庫以在 ASP.NET 中讀取 Excel 文件
- 載入並存取 Excel 文件中的目標工作表
- 存取
ToDataTable方法並將其傳回View - 使用循環在網頁上顯示 Excel 數據
- 遍歷所有資料並建立 HTML 表格
如何建立一個用於讀取 Excel 資料的 ASP.NET 專案?
為什麼 Visual Studio 2022 最適合這項工作?
使用 Visual Studio 2022 建立一個新的 ASP.NET 專案。 Visual Studio 2022 為 .NET 6+ 框架提供了出色的支持,改進了IronXL方法的 IntelliSense,並且在處理大型 Excel 檔案時效能更佳。 IDE 的 NuGet 整合讓IronXL安裝變得非常簡單。
我應該選擇哪個項目模板?
若要在 ASP.NET 中讀取 Excel 文件,請選擇"ASP.NET Core Web App (Model-View-Controller)"範本。 此範本提供了一個清晰的 MVC 結構,將資料處理(Excel 讀取)與展示邏輯分開。 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"。 此外,嘗試在控制器檔案的頂部添加using IronXL; - IntelliSense 應該會立即識別命名空間。 如需解決安裝問題,請造訪許可指南。
如何在控制器中讀取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);
}為什麼使用資料表而不是其他格式?
在Index操作方法中,使用IronXL的Load方法載入 Excel 檔案。 Excel 檔案的路徑(包括檔案名稱)會作為參數傳遞給方法呼叫。 接下來,選擇第一個 Excel 工作表作為工作表,並將其中包含的資料載入到DataTable物件中。 最後,將DataTable傳送到前端。
DataTable非常適合 ASP.NET MVC,因為它與 Razor 視圖無縫集成,並提供了對遍歷行和列的內建支援。 與自訂物件不同, 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());
}
}如何選擇不同的工作紙?
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
}如何在網頁上顯示Excel資料?
需要哪些視圖程式碼?
下一個範例展示如何在網頁瀏覽器中顯示上一個範例中傳回的DataTable 。
本範例中使用的 Excel 工作文件如下所示:

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>
}為什麼要使用 Bootstrap 進行表格樣式設計?
上述程式碼使用Index方法傳回的DataTable作為模型。 使用@for迴圈將表格中的每一行列印到網頁上,並包含 Bootstrap 格式進行裝飾。
Bootstrap 提供響應式表格設計,可自動調整以適應不同的螢幕尺寸——這對現代 Web 應用程式至關重要。 table-dark類別創建了一個美觀且易於閱讀的深色主題表格。 對於更高級的 Excel 格式設置,例如單元格邊框和對齊方式或背景圖案和顏色, IronXL提供了直接存取結構化資料的其他方法。
最終輸出結果是什麼樣子的?
專案運行結果如下所示:

Bootstrap 表格
如何為表格新增表頭?
若要顯示 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 可讓您直接在 C# 中讀取 Excel 檔案,而無需任何 Microsoft Office 依賴。只需透過 NuGet 安裝 IronXL,然後使用 WorkBook.Load() 開啟您的 Excel 檔案,並只需一行程式碼即可將其轉換為 DataTable: var dataTable = IronXL.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);
在 ASP.NET 中將 Excel 資料轉換為 DataTable 的最快方法是什麼?
IronXL.Excel 提供 ToDataTable() 方法,可立即將 Excel 工作表轉換為 System.Data.DataTable 物件。使用 IronXL 載入工作簿後,存取任何工作表並呼叫 ToDataTable(true) 以包含表頭。此轉換只需一行程式碼,並可與 ASP.NET MVC 視圖無縫運作。
Web 應用程式中的 Excel 檔案處理應使用哪個 .NET 版本?
IronXL 支援 .NET Framework 4.6.2+ 和 .NET Core 3.1+。對於新的 ASP.NET MVC 專案,建議使用 .NET 6.0 或更高版本,因為在使用 IronXL 處理大型 Excel 檔案時,它可提供更佳的記憶體管理,並可為試算表作業提供更好的 async/await 支援。
哪種 Visual Studio 專案範本最適合 Excel 閱讀功能?
在建立專案時,請選擇「ASP.NET Core Web App (Model-View-Controller)」範本。這種 MVC 結構完美地補足了 IronXL.Excel 的 DataTable 轉換功能,讓您可以在控制器中載入和處理 Excel 檔案,同時在檢視中乾淨地顯示資料。
如何在我的 ASP.NET 專案中安裝 Excel 閱讀函式庫?
透過 NuGet 套件管理員控制台執行「Install-Package IronXL.Excel」安裝 IronXL。安裝完成後,請檢查專案的相依性,並在控制器中加入「using IronXL;」,以驗證是否已正確加入 - IntelliSense 應該會立即辨識命名空間。






