使用 IRONXL 如何在 ASP.NET 中查看 Excel Jordi Bardia 更新日期:6月 22, 2025 Download IronXL NuGet 下載 DLL 下載 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 這個全面的教程將演示如何使用 ASP.NET MVC 和 IronXL 構建 Excel 查看器。 此查看器將使用戶能夠直接從其網頁顯示、編輯和瀏覽 Excel 文件。 什麼是 IronXL? IronXL 是一個強大的 .NET 庫,提供與 Excel 操作相關的大量功能。 它提供了一個簡化的 API,使 .NET 開發人員能夠以包括 XLS、XLSX、CSV 等在內的多種文件格式寫入、操作和讀取 Excel 文檔。 With IronXL, you can read Excel files, extract data, add or edit worksheets, create or modify rows and columns, apply formulas, save changes, and so much more. 所有這些操作都可以在無需安裝 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 項目。 打開 Visual Studio。 點擊 文件 > 新建 > 項目。 在新項目窗口中,選擇 ASP.NET Web 應用程序 (.NET Framework) 模板。 在 Visual Studio 中創建一個新的 ASP.NET Web 應用程序 將您的項目命名為 ExcelViewer,選擇項目位置,然後點擊 創建 按鈕。 配置您的項目 本文將著重實現此 ASP.NET MVC 應用程序中的 Excel 查看器功能。 將 IronXL 添加到您的項目中 為了處理 Excel 文件格式(如 .xls、.xlsx 和 .csv),IronXL 提供了全面的功能來加載 Excel 文檔、讀取、寫入、甚至修改 Excel 數據。 它支持公式、圖片、格式等更多功能。 右鍵單擊解決方案資源管理器中的項目,然後導航到管理 NuGet 程序包。 在NuGet 程序包管理器中,搜索IronXL.Excel。 點擊安裝以將其添加到您的項目中。 在 NuGet 包管理器 UI 中搜索並安裝 IronXL 包 您還可以使用以下命令從程序包管理器控制台安裝 IronXL: Install-Package IronXL.Excel 從程序包管理器控制台安裝 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。 這是魔法發生的地方! Excel 文件是使用 IronXL 的 WorkBook.Load 函數加載的,循環遍歷工作表,提取數據,並將其添加到 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 Here, initialize an ExcelViewModel and then load the WorkBook using IronXL, loop through each WorkSheet, and for each WorkSheet, we create an ExcelModel with the name and data of the worksheet. 然後將 ExcelModel 添加到 ExcelViewModel 中的 ExcelData 列表。 以下 Excel 文件的數據將被加載並顯示: 示例 Excel 文件 6. 創建視圖 在您的 Views/Excel 目錄中,創建一個新的 HTML 文件 Index.cshtml 來顯示 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 文件中的工作表名稱相同。點擊選項卡將以表格格式顯示相應工作表的數據。 Excel 查看器 結論 您剛剛使用 IronXL 創建了一個 ASP.NET Excel 查看器! 這個強大的庫使用戶能夠更有效和可管理地處理 Excel 文件。 借助 IronXL,在 .NET 環境中處理 Excel 文件從未如此簡單。 IronXL provides a 免費試用,讓您可以在無需任何前期成本的情況下探索和瞭解其豐富的功能。一旦您測試並發現它是您需求的完美解決方案,許可證起價為 $799。 常見問題解答 我如何使用 ASP.NET MVC 創建 Excel 檢視器? 您可以通過在 Visual Studio 中設置新的專案並通過 NuGet 套件管理器添加 IronXL 庫來創建 Excel 檢視器。這允許您在網頁應用中直接加載、顯示和操作 Excel 文件。 設置 ASP.NET MVC 專案以處理 Excel 檔案的步驟是什麼? 要設置處理 Excel 檔案的 ASP.NET MVC 專案,請打開 Visual Studio,創建一個新的 ASP.NET Web 應用項目,並通過 NuGet 安裝 IronXL 庫。接下來,實現如 ExcelModel 和 ExcelViewModel 的模型以管理 Excel 數據,並使用 ExcelController 加載和處理 Excel 文件。 我可以在 ASP.NET 應用中顯示多個 Excel 工作表嗎? 是的,您可以在 ASP.NET 應用中顯示多個 Excel 工作表,通過使用 IronXL 加載 Excel 檔案,然後利用 Bootstrap 的 nav-tabs 為每個工作表創建單獨的頁籤,以表格格式顯示數據。 如何使用 .NET 庫在 ASP.NET 中加載和處理 Excel 檔案? 在 ASP.NET 中,您可以使用 IronXL 的 WorkBook.Load 方法加載和處理 Excel 檔案。此方法允許您讀取 Excel 檔案,遍歷其工作表,並提取資料以進行顯示或進一步操作。 在 .NET 中使用 IronXL 進行 Excel 操作的優勢是什麼? IronXL 提供了幾個優勢進行 Excel 操作,包括支持各種 Excel 檔案格式、能夠操作複雜的 Excel 功能如圖像和條件格式化,並且無需在服務器上安裝 Microsoft Excel。 創建 ASP.NET Excel 檢視器時如何排除常見問題? 創建 ASP.NET Excel 檢視器時的常見問題可通過確保 IronXL 庫已通過 NuGet 正確安裝來排除,驗證所有必要的模型和控制器已正確實施,以及檢查 Excel 檔案是否為支持的格式。 是否可以直接從 ASP.NET 網頁編輯 Excel 檔案? 是的,使用 IronXL 可以直接從 ASP.NET 網頁編輯 Excel 檔案。該庫使您可以將 Excel 檔案加載到網頁應用,修改數據,並無縫地將變更保存回文件中。 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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 10月 27, 2025 如何在 C# 中創建 Excel 樞紐分析表 學習使用 C# Interop 和 IronXL 創建 Excel 中的樞紐分析表,這是一個清晰的分步指南。 閱讀更多 發表日期 10月 27, 2025 如何在 C# 中將 DataGridView 匯出為 Excel 並保留列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 10月 27, 2025 如何使用 IronXL 的 .NET Core CSV 讀取器 學習使用 IronXL 作為 .NET Core CSV 讀取器的有效方法,提供實用範例。 閱讀更多 如何在 C# 中將 XLS 文件轉換為 XLSX 文件如何在 C# 中撰寫 CSV 文件...
發表日期 10月 27, 2025 如何在 C# 中將 DataGridView 匯出為 Excel 並保留列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多