使用 IronXL 在 ASP.NET MVC 中使用 C# 读取 Excel 文件

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL 使 ASP.NET MVC 开发人员能够直接在 C# 中读取 Excel 文件,而无需依赖 Microsoft Office,只需几行代码即可将 Excel 数据转换为 System.Data.DataTable 以方便在 Web 视图中显示。

快速入门:在 MVC 中加载 Excel 表格并将其转换为 DataTable

本示例展示了如何在几秒钟内上手:加载 Excel 工作簿,选择其第一个工作表,然后使用 IronXL 将其转换为 System.Data.DataTable - 无需 Interop,没有麻烦。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronXL

    PM > Install-Package IronXL.Excel

  2. 复制并运行这段代码。

    var dataTable = IronXL.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronXL,免费试用!
    arrow pointer

如何创建用于 Excel 阅读的 ASP.NET 项目?

为什么 Visual Studio 2022 最适合用于此用途? 使用 Visual Studio 2022 创建一个新的 ASP.NET 项目。 Visual Studio 2022 为 .NET 6+ Framework 提供了出色的支持,改进了 `IronXL` 方法的智能提示功能,并在处理大型 Excel 文件时提供了更好的性能。 集成开发环境的 NuGet 集成使得安装 `IronXL` 特别简单。

我应该选择什么样的项目模板? 要在 ASP.NET 中阅读 Excel 文件,请选择 "ASP.NET Core Web App (模型-视图-控制器) "模板。 该模板采用简洁的 MVC 结构,将数据处理(Excel 读取)与演示逻辑分开。 MVC 模式可与 `IronXL` 的 `DataTable` 转换完美配合,使您能够在控制器中加载电子表格并在视图中无缝显示。

推荐使用哪个 .NET 版本? `IronXL` 适用于 .NET Framework 4.6.2+ 和 .NET Core 3.1+。 对于新的 ASP.NET MVC 项目,请使用 .NET 6.0 或更高版本,以获得最佳性能和安全性。 这些版本在处理大型 Excel 文件时改进了内存管理,在转换电子表格文件类型时提供了更好的异步/等待支持。

如何安装 IronXL 库?

安装要求是什么?

今天在您的项目中使用 IronXL,免费试用。

第一步:
green arrow pointer
------------------------------------

哪种安装方法最快? 创建新项目后,安装 `IronXL` 库。 请按照以下步骤安装 `IronXL`. 打开 NuGet 包管理器控制台并运行以下命令: ```shell :ProductInstall ```

如何验证安装? 要验证 `IronXL` 是否已正确安装,请在解决方案资源管理器中检查项目的依赖关系。 您应该可以在 "依赖项 > 软件包 "中看到 "IronXL"。 此外,请尝试在控制器文件顶部添加 `using IronXL;` - IntelliSense 应能立即识别命名空间。 有关安装问题的故障排除,请访问 [许可指南](https://ironsoftware.com/csharp/excel/get-started/license-keys/)。

如何在控制器中读取 Excel 文件?

控制器动作中包含哪些代码? 打开 ASP.NET 项目中的默认控制器(例如,`HomeController.cs`),并用以下代码替换 `Index` 方法: ```csharp using IronXL; using System.Data; public ActionResult Index() { // Load the Excel workbook from a specified path. WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx"); // Access the first worksheet from the workbook. WorkSheet workSheet = workBook.WorkSheets.First(); // Convert the worksheet data to a DataTable object. // The 'true' parameter uses the first row as column headers var dataTable = workSheet.ToDataTable(true); // Send the DataTable to the view for rendering. return View(dataTable); } ```

为什么使用 DataTable 而不是其他格式? 在 `Index` 操作方法中,使用 `IronXL` 的 `Load` 方法加载 Excel 文件。 Excel 文件的路径(包括文件名)作为参数传递给方法调用。 接下来,选择第一个 Excel 表单作为工作表单,并将其中包含的数据加载到 `DataTable` 对象中。 最后,将 `DataTable` 发送到前端。 `DataTable` 是 ASP.NET MVC 的理想选择,因为它可与 Razor 视图无缝集成,并为行和列的迭代提供内置支持。 与自定义对象不同,`DataTable` 不需要模型映射,并可自动处理混合数据类型。 您还可以在需要时将 `DataSet` 和 `DataTable` 导出回 Excel。 ### 文件丢失时的错误处理? 强大的错误处理功能可确保您的应用程序在 Excel 文件丢失或损坏时不会崩溃。 以下是适当处理异常的增强版本: ```csharp public ActionResult Index() { try { string filePath = @"C:\Files\Customer Data.xlsx"; // Check if file exists before attempting to load if (!System.IO.File.Exists(filePath)) { ViewBag.Error = "Excel file not found at specified location."; return View(new DataTable()); } // Load workbook with error handling WorkBook workBook = WorkBook.Load(filePath); // Verify worksheet exists if (workBook.WorkSheets.Count == 0) { ViewBag.Error = "No worksheets found in the Excel file."; return View(new DataTable()); } WorkSheet workSheet = workBook.WorkSheets.First(); var dataTable = workSheet.ToDataTable(true); return View(dataTable); } catch (Exception ex) { // Log the exception (consider using a logging framework) ViewBag.Error = $"Error reading Excel file: {ex.Message}"; return View(new DataTable()); } } ```

如何选择不同的工作表? `IronXL`提供了[选择和处理特定工作表](https://ironsoftware.com/csharp/excel/how-to/manage-worksheet/)的多种方法。 您可以通过索引、名称或遍历所有可用工作表来访问工作表: ```csharp // Method 1: Select by worksheet name WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data"); // Method 2: Select by index (zero-based) WorkSheet secondSheet = workBook.WorkSheets[1]; // Method 3: Select the default/active worksheet WorkSheet defaultSheet = workBook.DefaultWorkSheet; // Method 4: Iterate through all worksheets foreach (WorkSheet sheet in workBook.WorkSheets) { string sheetName = sheet.Name; // Process each worksheet } ```

如何在网页上显示 Excel 数据?

需要哪些视图代码? 下一个示例展示了如何在 Web 浏览器中显示上一个示例中返回的 `DataTable` 。 本例中使用的 Excel 工作文件如下所示:
Excel spreadsheet with customer names, shipping costs, and unit prices - sample data for web display tutorial

Excel 文件

打开 `index.cshtml`(索引视图),用以下 HTML 代码替换代码: ```csharp @{ ViewData["Title"] = "Home Page"; } @using System.Data @model DataTable
@* Check for errors first *@ @if (ViewBag.Error != null) {
@ViewBag.Error
} @* Display table only if data exists *@ @if (Model != null && Model.Rows.Count > 0) { @foreach (DataRow row in Model.Rows) { @for (int i = 0; i < Model.Columns.Count; i++) { } }
@row[i]
} else {

No data to display.

} ```

为什么使用 Bootstrap 进行表格样式设计? 上述代码使用`Index`方法返回的`DataTable`作为模型。 使用`@for`循环将表格中的每一行打印到网页上,并包含 Bootstrap 格式进行装饰。 Bootstrap 提供了可根据不同屏幕尺寸自动调整的响应式表格设计--这对现代网络应用至关重要。 `table-dark`类创建了一个引人注目的深色主题表格,易于阅读。 对于更高级的 Excel 格式化,如 [ 单元格边框和对齐方式](https://ironsoftware.com/csharp/excel/how-to/border-alignment/)或 [背景图案和颜色](https://ironsoftware.com/csharp/excel/how-to/background-pattern-color/),`IronXL` 提供了直接访问结构化数据的其他方法。

最终输出是什么样的? 该项目的运行结果如下所示:
Bootstrap table displaying Excel customer data with names, shipping costs, and unit prices in ASP.NET MVC application

Bootstrap 表格

如何在表格中添加页眉? 要显示 Excel 文件中的列头,请修改视图代码以包含表头部分。 当调用 `ToDataTable(true)` 时,`IronXL` 会自动使用第一行作为列名: ```csharp @if (Model != null && Model.Rows.Count > 0) { @foreach (DataColumn column in Model.Columns) { } @foreach (DataRow row in Model.Rows) { @for (int i = 0; i < Model.Columns.Count; i++) { } }
@column.ColumnName
@row[i]
} ``` 该增强功能可从 Excel 文件中显示正确的列标题,如 "客户名称"、"运费 "和 "单价"。对于涉及 [named ranges](https://ironsoftware.com/csharp/excel/how-to/named-range/) 或 [named tables](https://ironsoftware.com/csharp/excel/how-to/named-table/) 的更复杂场景,`IronXL` 提供了直接访问结构化数据的其他方法。

常见问题解答

没有 Microsoft Office,如何在 ASP.NET MVC 中读取 Excel 文件?

IronXL 可让您直接用 C# 阅读 Excel 文件,而无需依赖任何 Microsoft Office。只需通过 NuGet 安装 IronXL,然后使用 WorkBook.Load() 打开 Excel 文件并将其转换为 DataTable,只需一行代码即可: var dataTable = IronXL.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);

在 ASP.NET 中将 Excel 数据转换为 DataTable 的最快方法是什么?

IronXL.Excel 提供 ToDataTable() 方法,可立即将 Excel 工作表转换为 System.Data.DataTable 对象。使用 IronXL 加载工作簿后,访问任意工作表并调用 ToDataTable(true) 即可包含表头。这种转换只需一行代码,并可与 ASP.NET MVC 视图无缝配合。

在网络应用程序中处理 Excel 文件应使用哪个 .NET 版本?

IronXL 支持 .NET Framework 4.6.2+ 和 .NET Core 3.1+。对于新的 ASP.NET MVC 项目,建议使用 .NET 6.0 或更高版本,因为在使用 IronXL 处理大型 Excel 文件时,它可以提供更好的内存管理,并为电子表格操作提供更好的异步/等待支持。

哪种 Visual Studio 项目模板最适合 Excel 阅读功能?

创建项目时,请选择 "ASP.NET Core Web 应用程序(模型-视图-控制器)"模板。这种 MVC 结构完美地补充了 IronXL.Excel 的 DataTable 转换功能,使您可以在控制器中加载和处理 Excel 文件,同时在视图中干净利落地显示数据。

如何在 ASP.NET 项目中安装 Excel 阅读库?

通过 NuGet 软件包管理器控制台运行 "Install-Package IronXL.Excel "安装 IronXL。安装完成后,通过检查项目依赖关系并在控制器中添加 "using IronXL; "来验证是否已正确添加,IntelliSense 应能立即识别命名空间。

Curtis Chau
技术作家

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

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

准备开始了吗?
Nuget 下载 1,765,830 | 版本: 2025.12 刚刚发布