跳至頁尾內容
USING IRONXL
如何在ASP .NET中查看Excel檔案 | IronXL

如何在 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專案。

  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.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; }
    }
}
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
$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
    }
}
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 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
$vbLabelText   $csharpLabel

在這裡,初始化一個 ExcelViewModel,然後使用IronXL載入 WorkBook,迴圈遍歷每個 WorkSheet,並為每個 WorkSheet 建立一個 ExcelModel,其中包含該工作表的名稱和資料。 然後將 ExcelModel 新增到 ExcelData 列表中於 ExcelViewModel

以下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文件。 在 .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程式庫。接下來,實現如ExcelModelExcelViewModel的模型以管理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檔案的能力,而無需任何初期成本。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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