跳至页脚内容
使用 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应用程序的数据源和电子表格需求。 将在ASP.NET Web应用程序中使用IronXL库查看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; }
    }
}
$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文件中的工作表名称命名的tabs构成的网页。点击标签将以表格式显示相应工作表的数据。

如何在ASP.NET中查看 Excel,图 6:Excel 查看器 Excel查看器

结论

您刚刚使用IronXL创建了一个ASP.NET Excel查看器! 这个强大的库使用户能够更高效、更易于管理地处理Excel文件。 在.NET环境中,借助IronXL,处理Excel文件从未如此简单。

IronXL提供免费试用,让您无需任何前期费用即可探索和了解其强大的功能。一旦您测试后发现它完全符合您的需求,许可证价格将从 $799 起。

常见问题解答

如何使用 ASP.NET MVC 创建一个 Excel 查看器?

您可以通过在 Visual Studio 中设置一个新项目并通过 NuGet 包管理器添加 IronXL 库来使用 ASP.NET MVC 创建一个 Excel 查看器。这使您能够直接在网页应用程序中加载、显示和操作 Excel 文件。

为处理 Excel 文件设置 ASP.NET MVC 项目的步骤是什么?

要为处理 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 在 .NET 中进行 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 文档中的数据,并以多种格式(包括 XLS、XLSX 和 CSV)将新数据或更改写入 Excel 文件。

在 ASP.NET MVC 应用程序中应创建什么模型来管理 Excel 数据?

在 ASP.NET MVC 应用程序中,您应该创建诸如 ExcelModel 之类的模型以表示单个 Excel 表,以及 ExcelViewModel 用于管理表集合并处理文件上传和消息传递。

如何在购买前测试 IronXL 的功能?

您可以通过下载其网站上提供的免费试用版来测试 IronXL 的功能。此试用版允许您无需任何初始费用即可在您的 .NET 应用程序中探索该库在处理 Excel 文件方面的能力。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我