使用 IRONXL 如何在 ASP.NET 中查看 Excel Jordi Bardia 更新:6月 22, 2025 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 本教學將全面示範如何使用 ASP.NET MVC 和 IronXL 建立 Excel 檢視器。 此檢視器將使使用者能夠直接從其網頁上顯示、編輯和瀏覽 Excel 文件。 IronXL是什麼? IronXL是一個功能強大的 .NET 程式庫,提供了大量與 Excel 操作相關的功能。 它提供了一個簡化的 API,使 .NET 開發人員能夠以各種文件格式(包括 XLS、XLSX、CSV 等)編寫、操作和讀取 Excel 文件。 使用 IronXL,您可以讀取 Excel 檔案、提取資料、新增或編輯工作表、建立或修改行和列、套用公式、儲存變更等等。 所有這些操作都不需要在您的電腦上安裝 Microsoft Excel 即可完成。 IronXL 支援影像、樣式、條件格式和其他複雜的 Excel 功能,使其成為 .NET Excel 操作的綜合解決方案。 它非常適合處理 ASP.NET MVC 應用程式的資料來源和電子表格需求。 IronXL 庫將用於在 ASP.NET Web 應用程式中檢視 Excel 檔案。 先決條件 具備 ASP.NET MVC 的基本知識 您的電腦上已安裝 Visual Studio 已安裝IronXL庫。 您可以在他們的官方文件中找到安裝指南。 開始 首先,讓我們在 Visual Studio 中建立一個新的 ASP.NET MVC 專案。 1.開啟 Visual Studio。 點選檔案 > 新建 > 項目。 在新專案視窗中,選擇ASP.NET Web 應用程式 (.NET Framework)範本。 如何在 ASP.NET 中查看 Excel,圖 1:在 Visual Studio 中建立一個新的 ASP.NET Web 應用程式 在 Visual Studio 中建立一個新的 ASP.NET Web 應用程式 將項目命名為ExcelViewer ,選擇項目位置,然後按一下"建立"按鈕。 如何在 ASP.NET 中查看 Excel,圖 2:配置您的項目 配置您的項目 本文將重點放在如何在 ASP.NET MVC 應用程式中實作 Excel 檢視器功能。 將 IronXL 加入您的專案中 為了處理 Excel 檔案格式(如 .xls、.xlsx 和 .csv),IronXL 提供了全面的功能來載入 Excel 文件、讀取、寫入甚至修改 Excel 資料。 它支援公式、圖像、格式設定等等。 在解決方案資源管理器中以滑鼠右鍵按一下您的項目,然後導覽至"管理 NuGet 套件" 。 在NuGet 套件管理員中,搜尋IronXL.Excel 。 點擊"安裝"將其新增至您的專案。 如何在 ASP.NET 中查看 Excel,圖 3:在 NuGet 套件管理器 UI 中搜尋並安裝 IronXL 套件 在 NuGet 套件管理器 UI 中搜尋並安裝 IronXL 套件。 您也可以使用軟體套件管理器控制台,透過以下命令安裝 IronXL: Install-Package IronXL.Excel 如何在 ASP.NET 中查看 Excel,圖 4:從套件管理器控制台安裝 IronXL 程式包 從軟體套件管理器控制台安裝 IronXL 軟體包 IronXL 安裝完成後,我們繼續進行下一步。 建築模型 ExcelModel 第一步是為 Excel 資料建立模型。 ExcelModel類別將表示單一 Excel 工作表,並將包含工作表名稱和 Excel 工作表中的資料。 namespace Excel_File_Viewer_IronXL.Models { public class ExcelModel { public string SheetName { get; set; } // Data is a list of string arrays, each array represents a row in the sheet. public List<string[]> Data { get; set; } } } namespace Excel_File_Viewer_IronXL.Models { public class ExcelModel { public string SheetName { get; set; } // Data is a list of string arrays, each array represents a row in the sheet. public List<string[]> Data { get; set; } } } Namespace Excel_File_Viewer_IronXL.Models Public Class ExcelModel Public Property SheetName() As String ' Data is a list of string arrays, each array represents a row in the sheet. Public Property Data() As List(Of String()) End Class End Namespace $vbLabelText $csharpLabel ExcelModel由兩個屬性定義, SheetName和Data 。 SheetName是一個簡單的字串,用於保存每個 Excel 工作表的名稱。 Data是一個字串數組列表,用於儲存 Excel 表格中每一行的資料。 ExcelViewModel 接下來,我們來建立ExcelViewModel 。 該模型是一個包裝器,其中包含一個檔案、一條訊息和一個ExcelModel列表,該列表表示檔案中所有工作表中的資料。 using Microsoft.AspNetCore.Http; using System.Collections.Generic; namespace Excel_File_Viewer_IronXL.Models { public class ExcelViewModel { public IFormFile File { get; set; } // For uploading Excel file public string Message { get; set; } // Message for storing success/error messages public List<ExcelModel> ExcelData { get; set; } // List to store data from all sheets } } using Microsoft.AspNetCore.Http; using System.Collections.Generic; namespace Excel_File_Viewer_IronXL.Models { public class ExcelViewModel { public IFormFile File { get; set; } // For uploading Excel file public string Message { get; set; } // Message for storing success/error messages public List<ExcelModel> ExcelData { get; set; } // List to store data from all sheets } } Imports Microsoft.AspNetCore.Http Imports System.Collections.Generic Namespace Excel_File_Viewer_IronXL.Models Public Class ExcelViewModel Public Property File() As IFormFile ' - For uploading Excel file Public Property Message() As String ' - Message for storing success/error messages Public Property ExcelData() As List(Of ExcelModel) ' - List to store data from all sheets End Class End Namespace $vbLabelText $csharpLabel 這個類別將用作視圖模型。 它具有用於文件上傳的IFormFile屬性、用於顯示任何訊息的Message字串以及一個List<ExcelModel>儲存檢索到的Excel資料。 5. 建立ExcelController以載入 Excel 檔案進行資料擷取 然後建立一個新的ExcelController 。 這就是奇蹟發生的地方! 使用 IronXL 的WorkBook.Load函數載入 Excel 文件,遍歷工作表,提取數據,並將其新增至ExcelViewModel中。 using Excel_File_Viewer_IronXL.Models; using IronXL; using System.Collections.Generic; using System.Web.Mvc; using System; using System.Linq; public class ExcelController : Controller { // GET: Excel public ActionResult Index() { var model = new ExcelViewModel(); // Define the file path for the Excel file string filePath = Server.MapPath("~/App_Data/Test.xlsx"); // List to store data for each sheet List<ExcelModel> data = new List<ExcelModel>(); try { // Load workbook directly from a file path var workbook = WorkBook.Load(filePath); // Loop through all worksheets in the workbook foreach (var worksheet in workbook.WorkSheets) { // Add each worksheet's name and data to the data list data.Add(new ExcelModel { SheetName = worksheet.Name, Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList() }); } model.ExcelData = data; model.Message = "File processed successfully!"; } catch (Exception ex) { model.Message = $"Error occurred while processing file: {ex.Message}"; } return View(model); } } using Excel_File_Viewer_IronXL.Models; using IronXL; using System.Collections.Generic; using System.Web.Mvc; using System; using System.Linq; public class ExcelController : Controller { // GET: Excel public ActionResult Index() { var model = new ExcelViewModel(); // Define the file path for the Excel file string filePath = Server.MapPath("~/App_Data/Test.xlsx"); // List to store data for each sheet List<ExcelModel> data = new List<ExcelModel>(); try { // Load workbook directly from a file path var workbook = WorkBook.Load(filePath); // Loop through all worksheets in the workbook foreach (var worksheet in workbook.WorkSheets) { // Add each worksheet's name and data to the data list data.Add(new ExcelModel { SheetName = worksheet.Name, Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList() }); } model.ExcelData = data; model.Message = "File processed successfully!"; } catch (Exception ex) { model.Message = $"Error occurred while processing file: {ex.Message}"; } return View(model); } } Imports Excel_File_Viewer_IronXL.Models Imports IronXL Imports System.Collections.Generic Imports System.Web.Mvc Imports System Imports System.Linq Public Class ExcelController Inherits Controller ' GET: Excel Public Function Index() As ActionResult Dim model = New ExcelViewModel() ' Define the file path for the Excel file Dim filePath As String = Server.MapPath("~/App_Data/Test.xlsx") ' List to store data for each sheet Dim data As New List(Of ExcelModel)() Try ' Load workbook directly from a file path Dim workbook = WorkBook.Load(filePath) ' Loop through all worksheets in the workbook For Each worksheet In workbook.WorkSheets ' Add each worksheet's name and data to the data list data.Add(New ExcelModel With { .SheetName = worksheet.Name, .Data = worksheet.Rows.Select(Function(r) r.ToArray().Select(Function(c) c.Value.ToString()).ToArray()).ToList() }) Next worksheet model.ExcelData = data model.Message = "File processed successfully!" Catch ex As Exception model.Message = $"Error occurred while processing file: {ex.Message}" End Try Return View(model) End Function End Class $vbLabelText $csharpLabel 在這裡,初始化一個ExcelViewModel ,然後使用 IronXL 載入WorkBook ,遍歷每個WorkSheet ,並為每個WorkSheet建立一個具有工作表名稱和資料的ExcelModel 。 然後將ExcelModel加入ExcelViewModel中的ExcelData清單中。 以下Excel檔案的資料將會載入並顯示: 如何在 ASP.NET 中查看 Excel 文件,圖 5:範例 Excel 文件 範例 Excel 文件 6. 建立視圖 在Views/Excel目錄中,建立一個名為Index.cshtml新 HTML 文件,用於顯示 Excel 資料。 然後使用 Bootstrap 的nav-tabs來表示 Excel 檔案中的每個工作表。每個工作表將是一個單獨的標籤頁,標籤頁的內容將是該工作表的資料。 @model Excel_File_Viewer_IronXL.Models.ExcelViewModel @{ ViewBag.Title = "Index"; } <h2>Excel File Viewer</h2> @if (Model.ExcelData != null) { <ul class="nav nav-tabs" id="myTab" role="tablist"> @for (int i = 0; i < Model.ExcelData.Count; i++) { <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)"> @Model.ExcelData[i].SheetName </a> </li> } </ul> <div class="tab-content" id="myTabContent"> @for (int i = 0; i < Model.ExcelData.Count; i++) { <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class="table table-bordered"> @foreach (var row in Model.ExcelData[i].Data) { <tr> @foreach (var cell in row) { <td>@cell</td> } </tr> } </table> </div> } </div> } @model Excel_File_Viewer_IronXL.Models.ExcelViewModel @{ ViewBag.Title = "Index"; } <h2>Excel File Viewer</h2> @if (Model.ExcelData != null) { <ul class="nav nav-tabs" id="myTab" role="tablist"> @for (int i = 0; i < Model.ExcelData.Count; i++) { <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)"> @Model.ExcelData[i].SheetName </a> </li> } </ul> <div class="tab-content" id="myTabContent"> @for (int i = 0; i < Model.ExcelData.Count; i++) { <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class="table table-bordered"> @foreach (var row in Model.ExcelData[i].Data) { <tr> @foreach (var cell in row) { <td>@cell</td> } </tr> } </table> </div> } </div> } model ReadOnly Property () As Excel_File_Viewer_IronXL.Models.ExcelViewModel ViewBag.Title = "Index" End Property 'INSTANT VB TODO TASK: The following line could not be converted: (Of h2) Excel File Viewer</h2> [if](Model.ExcelData != Nothing) If True Then 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <ul class="nav nav-tabs" id="myTab" role="tablist"> for(int i = 0; i < Model.ExcelData.Count; i++) "myTab" role="tablist"> [for](Integer i = 0; i < Model.ExcelData.Count; i) If True Then 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <ul class="nav nav-tabs" id="myTab" role "nav nav-tabs" id="myTab" role <ul class="nav nav-tabs" id i += 1 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)"> @Model.ExcelData[i].SheetName </a> </li> "content-@i" aria-selected="@(i == 0)"> Model.ExcelData(i).SheetName </a> </li> 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected "tab" aria-controls="content-@i" aria-selected 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls "#content-@i" role="tab" aria-controls 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role "tab" href="#content-@i" role 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href "tab-@i" data-toggle="tab" href 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle "nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id "nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id <li class="nav-item"> <a class End If 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: </ul> <div class="tab-content" id="myTabContent"> for(int i = 0; i < Model.ExcelData.Count; i++) "tab-content" id="myTabContent"> [for](Integer i = 0; i < Model.ExcelData.Count; i) If True Then </ul> <div class="tab-content" id i += 1 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class="table table-bordered"> foreach(var row in Model.ExcelData[i].Data) "tab-@i"> <table class="table table-bordered"> foreach(var row in Model.ExcelData(i).Data) If True Then 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class "tabpanel" aria-labelledby="tab-@i"> <table class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby "content-@i" role="tabpanel" aria-labelledby 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role "tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role <div class="tab-pane fade @(i == 0 ? "show active" : "")" id 'INSTANT VB TODO TASK: Local functions are not converted by Instant VB: ' (Of tr) @foreach(var cell in row) ' { ' <td> @cell</td> ' } </tr> End If </table> </div> End If </div> End If $vbLabelText $csharpLabel 在這個程式碼範例中, nav nav-tabs將產生一個選項卡列表,每個選項卡代表 Excel 檔案中的一個工作表。對應的選項卡內容將以表格格式顯示對應工作表的資料。 透過一些修改,新增了一個瀏覽按鈕,可以手動選擇 Excel 檔案。 運行程式 完成所有步驟並正確設定項目後,就可以運行它了。 您應該會看到一個網頁,其中包含以您 Excel 檔案中工作表名稱命名的標籤頁。點選標籤頁即可用表格形式顯示對應工作表的資料。 如何在 ASP.NET 中查看 Excel,圖 6:Excel 檢視器 Excel 檢視器 結論 您剛剛使用 IronXL 建立了一個 ASP.NET Excel 檢視器! 這個強大的程式庫使用戶能夠以更有效率、更易於管理的方式處理 Excel 檔案。 借助 IronXL,在 .NET 環境中處理 Excel 檔案從未如此簡單。 IronXL提供免費試用,讓您無需任何前期費用即可探索和了解其強大的功能。如果您試用後發現它完全符合您的需求,許可證起價為$799 。 常見問題解答 如何使用 ASP.NET MVC 建立 Excel 檢視器? 您可以使用 ASP.NET MVC 建立 Excel 檢視器,方法是在 Visual Studio 中建立新專案,並透過 NuGet Package Manager 加入 IronXL library。這可讓您直接在 Web 應用程式中載入、顯示和處理 Excel 檔案。 設定 ASP.NET MVC 專案以處理 Excel 檔案的步驟為何? 若要建立處理 Excel 檔案的 ASP.NET MVC 專案,請開啟 Visual Studio,建立新的 ASP.NET Web Application 專案,並透過 NuGet 安裝 IronXL library。接下來,實作模型如 ExcelModel 和 ExcelViewModel 來管理 Excel 資料,並使用 ExcelController 來載入和處理 Excel 檔案。 我可以在 ASP.NET 應用程式中顯示多個 Excel 表單嗎? 是的,您可以在 ASP.NET 應用程式中顯示多個 Excel 工作表,方法是使用 IronXL 載入 Excel 檔案,然後運用 Bootstrap 的 nav-tabs 為每個工作表建立獨立的標籤,以表格格式顯示資料。 如何在 ASP.NET 中使用 .NET 函式庫載入並處理 Excel 檔案? 在 ASP.NET 中,您可以使用 IronXL 的 WorkBook.Load 方法載入和處理 Excel 檔案。此方法允許您讀取 Excel 檔案、遍歷其工作表,並擷取資料以供顯示或進一步處理。 在 .NET 中使用 IronXL.Excel 進行 Excel 操作有哪些優點? IronXL 為 .NET 中的 Excel 操作提供了多項優勢,包括支援各種 Excel 檔案格式、能夠處理複雜的 Excel 功能(如圖片和條件格式化),以及不需要在伺服器上安裝 Microsoft Excel 的好處。 在建立 ASP.NET Excel 檢視器時,如何排除常見問題? 建立 ASP.NET Excel 檢視器時的常見問題可透過下列方式排除:確保透過 NuGet 正確安裝 IronXL 函式庫、驗證所有必要的模型和控制器均已正確實作,以及檢查 Excel 檔案是否為支援的格式。 是否可以直接從 ASP.NET 網頁編輯 Excel 檔案? 是的,使用 IronXL 可以直接從 ASP.NET 網頁編輯 Excel 檔案。這個函式庫可讓您將 Excel 檔案載入 Web 應用程式、修改資料,並將變更無縫儲存回檔案。 IronXL 是否同時支援 Excel 檔案的讀取與寫入? 是的,IronXL 支援讀寫 Excel 檔案。您可以使用它從現有 Excel 文件讀取資料,並將新資料或變更寫入多種格式的 Excel 檔案,包括 XLS、XLSX 和 CSV。 在 ASP.NET MVC 應用程式中,應該建立哪些模型來管理 Excel 資料? 在 ASP.NET MVC 應用程式中,您應該建立模型,例如 ExcelModel 來表示個別 Excel 表單,以及 ExcelViewModel 來管理表單集合,並處理檔案上傳和訊息傳送。 購買前如何測試 IronXL 的功能? 您可以下載其網站上提供的免費試用版來測試 IronXL 的功能。此試用版可讓您探索該函式庫在您的 .NET 應用程式中處理 Excel 檔案的功能,而無需任何初始成本。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多 發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多 如何在 C# 中將 XLS 文件轉換為 XLSX 文件如何在 C# 中撰寫 CSV 文件...
發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多
發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多
發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多