跳至頁尾內容
使用 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。

  1. 點選檔案 > 新建 > 項目
  2. 在新專案視窗中,選擇ASP.NET Web 應用程式 (.NET Framework)範本。

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

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

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

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

將 IronXL 加入您的專案中

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

  1. 解決方案資源管理器中以滑鼠右鍵按一下您的項目,然後導覽至"管理 NuGet 套件"
  2. NuGet 套件管理員中,搜尋IronXL.Excel
  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

這個類別將用作視圖模型。 它具有用於文件上傳的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);
    }
}
$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>
}
$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 套件管理器新增 IronXL 庫。這樣,您就可以直接在 Web 應用程式中載入、顯示和操作 Excel 檔案。

如何設定用於處理 Excel 檔案的 ASP.NET MVC 專案?

若要設定一個用於處理 Excel 檔案的 ASP.NET MVC 項目,請開啟 Visual Studio,建立一個新的 ASP.NET Web 應用程式項目,並透過 NuGet 安裝 IronXL 程式庫。接下來,實作ExcelModelExcelViewModel等模型來管理 Excel 數據,並使用ExcelController來載入和處理 Excel 檔案。

我可以在 ASP.NET 應用程式中顯示多個 Excel 工作表嗎?

是的,您可以使用 IronXL 載入 Excel 文件,然後在 ASP.NET 應用程式中顯示多個 Excel 工作表,並利用 Bootstrap 的nav-tabs為每個工作表建立單獨的選項卡,以表格格式顯示資料。

如何使用 .NET 函式庫在 ASP.NET 中載入和處理 Excel 檔案?

在 ASP.NET 中,您可以使用 IronXL 的WorkBook.Load方法來載入和處理 Excel 檔案。此方法可讓您讀取 Excel 文件,遍歷其工作表,並提取資料以進行顯示或進一步處理。

在.NET中使用IronXL進行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 檔案的功能。

喬迪·巴迪亞
軟體工程師
喬迪精通Python、C#和C++,除了在Iron Software運用這些技能外,他還從事遊戲程式設計。他參與產品測試、產品開發和研究等工作,為產品的持續改進做出了巨大貢獻。豐富的經驗讓他始終保持挑戰性和工作熱情,他表示這是他最喜歡在Iron Software工作的原因之一。喬迪在佛羅裡達州邁阿密長大,畢業於佛羅裡達大學,主修電腦科學和統計學。