跳過到頁腳內容
使用 IRONXL

如何在 ASP.NET 中查看 Excel

本教學將全面示範如何使用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。
  2. 點選檔案 > 新建 > 項目
  3. 在新專案視窗中,選擇ASP.NET Web 應用程式(.NET Framework)範本。

    如何在ASP.NET中查看 Excel,圖 1:在 Visual Studio 中建立新的ASP.NET Web 應用程式 在 Visual Studio 中建立一個新的ASP.NET Web 應用程式

  4. 將項目命名為ExcelViewer ,選擇項目位置,然後按一下"建立"按鈕。

    如何在ASP.NET中查看 Excel,圖 2:配置您的專案 配置您的項目

本文將重點放在如何在ASP.NET MVC 應用程式中實作 Excel 檢視器功能。

將IronXL加入您的專案中

為了處理 Excel 檔案格式(如 .xls、.xlsx 和 .csv), IronXL提供了全面的功能來載入 Excel 文件、讀取、寫入甚至修改 Excel 資料。 它支援公式、圖像、格式設定等等。

  1. 解決方案資源管理器中以滑鼠右鍵按一下您的項目,然後導覽至"管理NuGet套件"
  2. NuGet程式套件管理員中,搜尋IronXL
  3. 點擊"安裝"將其新增至您的專案。

    如何在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; }
    }
}
$vbLabelText   $csharpLabel

ExcelModel 定義了兩個屬性,SheetNameDataSheetName 是一個簡單的字串,用於保存每個 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
    }
}
$vbLabelText   $csharpLabel

這個類別將用作視圖模型。 它有一個用於文件上傳的屬性,一個用於顯示任何訊息的字串,以及一個用於儲存檢索到的 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);
    }
}
$vbLabelText   $csharpLabel

在這裡,初始化一個 ExcelViewModel,然後使用IronXL加載WorkBook ,循環遍歷每個WorkSheet ,對於每個 WorkSheet,我們創建一個 ExcelModel@,其名稱和資料與工作表相同。 然後,將 ExcelModel 加到 ExcelViewModel 中的 ExcelData 清單中。

以下Excel檔案的資料將會載入並顯示:

如何在ASP.NET中查看 Excel,圖 5:範例 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>
}
$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 檢視器?

您可以通過在 Visual Studio 中設置新的專案並通過 NuGet 套件管理器添加 IronXL 庫來創建 Excel 檢視器。這允許您在網頁應用中直接加載、顯示和操作 Excel 文件。

設置 ASP.NET MVC 專案以處理 Excel 檔案的步驟是什麼?

要設置處理 Excel 檔案的 ASP.NET MVC 專案,請打開 Visual Studio,創建一個新的 ASP.NET Web 應用項目,並通過 NuGet 安裝 IronXL 庫。接下來,實現如 ExcelModelExcelViewModel 的模型以管理 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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我