如何在 ASP.NET 中查看 Excel
本教程將全面演示如何使用ASP.NET MVC和IronXL建立Excel檢視器。 此檢視器將使使用者能夠直接從其網頁顯示、編輯和導航Excel文件。
什麼是IronXL?
IronXL 是一個強大的 .NET 程式庫,提供與Excel操作相關的大量功能。 它提供了一個簡化的API,讓 .NET 開發者可以編寫、操控和讀取Excel文件,支援多種文件格式,包括XLS、XLSX、CSV等。
使用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專案。
- 開啟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; }
}
}
Imports System.Collections.Generic
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
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
此類將用作檢視模型。 它有一個 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 As 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
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
在這裡,初始化一個 ExcelViewModel,然後使用IronXL載入 WorkBook,迴圈遍歷每個 WorkSheet,並為每個 WorkSheet 建立一個 ExcelModel,其中包含該工作表的名稱和資料。 然後將 ExcelModel 新增到 ExcelData 列表中於 ExcelViewModel。
以下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>
}
在此程式碼範例中,nav nav-tabs 將生成一系列標籤,每個代表Excel文件中的一個工作表。對應的標籤內容將以表格格式顯示相應工作表的資料。 通過進行一些改動,新增了一個瀏覽按鈕以便手動選擇Excel文件。
運行程式
在遵循所有步驟並正確設置專案後,是時候運行它了。 您會看到一個網頁,其中包含以您的Excel文件中的工作表命名的標籤。點擊標籤將以表格格式顯示相應工作表的資料。
Excel檢視器
結論
您剛剛使用IronXL建立了一個ASP.NET Excel檢視器! 這個強大的程式庫讓使用者可以更高效和可控地處理Excel文件。 在 .NET 環境中,借助IronXL,處理Excel文件從未如此輕鬆。
IronXL 提供 免費試用,讓您可以在無需任何前置成本的情況下探索並了解其豐富功能。一旦您測試並發現它是您的完美解決方案,授權費用從 $999 開始。
常見問題
我如何使用ASP.NET MVC建立Excel檢視器?
您可以通過在Visual Studio中設立一個新專案,並通過NuGet套件管理器新增IronXL程式庫來使用ASP.NET MVC建立Excel檢視器。這使您能夠在您的網頁應用程式中直接載入、顯示和操作Excel檔案。
設置ASP.NET MVC專案以處理Excel檔案的步驟是什麼?
要設置ASP.NET MVC專案以處理Excel檔案,請開啟Visual Studio,建立一個新的ASP.NET Web Application專案,並通過NuGet安裝IronXL程式庫。接下來,實現如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檔案,遍歷其工作表,並提取資料以供顯示或進一步操作。
使用IronXL進行.NET中的Excel操作有哪些優勢?
IronXL在.NET中的Excel操作提供多項優勢,包括多種Excel檔案格式的支援、操控如圖片和條件格式等複雜Excel功能的能力,以及不需要在伺服器上安裝Microsoft Excel的好處。
如何排除建立ASP.NET Excel檢視器時的常見問題?
建立ASP.NET Excel檢視器時的常見問題可以通過確保IronXL程式庫正確地經由NuGet安裝、驗證所有需要的模型和控制器正確實施、並檢查Excel檔案是否為支援格式來排除。
有可能直接從ASP.NET網頁編輯Excel檔案嗎?
是的,可以直接從ASP.NET網頁編輯Excel檔案,使用IronXL。該程式庫讓您能夠將Excel檔案載入您的網頁應用程式,修改資料,並將更改無縫地保存回檔案中。
IronXL是否支援讀取和寫入Excel檔案?
是的,IronXL支援讀取和寫入Excel檔案。您可以使用它從現有的Excel文件中讀取資料,並將新資料或變更寫入多種格式的Excel檔案中,包括XLS、XLSX和CSV。
在ASP.NET MVC應用程式中應建立哪些模型來管理Excel資料?
在ASP.NET MVC應用程式中,您應該建立如ExcelModel的模型來表示個別的Excel工作表,和ExcelViewModel來管理工作表集合並處理檔案上傳和消息。
我可以如何在購買前測試IronXL的功能?
您可以下載他們網站上提供的免費試用版來測試IronXL的功能。此試用版讓您可以在您的.NET應用程式中處理Excel檔案的能力,而無需任何初期成本。




