IRONSOFTWAREHOME
USING IRONXL

如何在ASP.NET C# 中将 Excel 导入 GridView

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

使用IronXL将 Excel 数据导入ASP.NET C# 中的 GridView 非常简单。 您加载一个工作簿,将工作表转换为GridView控件——无需OLEDB驱动程序或复杂的连接字符串。

>**亲自体验一下:**获取IronXL的免费试用版,跟随下面的代码示例进行操作。

如何安装IronXL以实现 Excel GridView 集成?

在编写任何代码之前,您需要将IronXL添加到您的ASP.NET项目中。 最快捷的方法是NuGet,可以通过 Visual Studio 包管理器控制台或.NET CLI 进行安装。

PM > Install-Package IronXL.Excel

安装完成后, NuGet会将所有必需的引用添加到您的项目中。 无需安装外部驱动程序,无需注册 OLEDB 提供程序,服务器也不依赖 Microsoft Office。 该库以单个托管程序集的形式发布,可在 Windows、Linux、macOS 和云托管环境(包括 Azure 应用服务)上运行。

安装完成后,请将以下命名空间添加到任何读取或写入 Excel 数据的代码隐藏文件中:

using IronXL;
using System.Data;
using System.IO;

IronXL支持.xls(Excel 97-2003)和.xlsx(Excel 2007+)格式,因此您不需要为每种文件类型进行单独处理。 相同的WorkBook.Load调用通过自动检查文件签名来处理任何格式。

为什么 GridView 数据绑定要跳过 OLEDB?

传统的基于 OLEDB 的 Excel 导入需要Microsoft Access 数据库引擎(ACE 或 JET) ,该引擎必须以正确的位数(32 位或 64 位)安装在服务器上。 由于缺少驱动程序或驱动程序不匹配,跨不同服务器环境的部署经常失败,而且微软不再默认在 Windows 中提供 64 位 ACE 驱动程序。

IronXL完全消除了这种依赖性。 它直接在托管代码中读取原始的 Open XML 或 BIFF 格式。 在开发、测试和生产环境中,您可以获得可预测的行为,而无需担心驱动程序版本问题。

IronXL支持哪些.NET平台?

IronXL 的目标框架为.NET 10、 .NET 8、 .NET Standard 2.0 和.NET Framework 4.6.2+。 这意味着无论您的ASP.NET应用程序运行在经典的 Web Forms、 ASP.NET MVC 还是现代的ASP.NET Core Razor Pages上,您都可以使用同一个库,而无需对 Excel 处理层进行任何代码更改。 您可以在NuGet上找到IronXL软件包,以便在安装前查看版本历史记录和发行说明。

将 Excel 数据加载到 GridView 中的最快方法是什么?

最快的方法将GridView.DataBind组合成大约四行有效代码。 基本场景下无需手动创建列,也无需遍历行。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();

DataTable的列名。 当您使用GridView时,ASP.NET会自动为每个Excel标题创建一个列。

ToDataTable 如何处理混合数据类型?

在调用string。 如果您的应用程序需要类型化列——例如,价格数据的DataTable之前将它们转换为适当的.NET类型。

对于在GridView中的简单显示,字符串列就足够了,因为网格无论如何都会将所有值渲染为文本。

如何创建用于导入 Excel 的ASP.NET Web Forms 页面?

一个最小的导入页面需要三个控件:一个文件上传输入、一个提交按钮和GridView。 在您的<form runat="server">元素内添加以下ASPX标记:

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />

如果使用Bootstrap样式表,CssClass属性会将网格连接到样式表,使您无需额外配置即可获得样式化的行和边框。

在后台代码中,处理按钮点击事件。 下面的模式将上传的文件保存到临时服务器路径,使用IronXL加载,并将生成的DataTable绑定到网格:

using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}

此实现遵循事件处理程序内部逻辑的顶级语句风格,同时保留所需的 Web Forms 事件签名。 注意,Uploads文件夹已经存在,该调用不操作。

在ASP.NET C#中使用IronXL将Excel导入GridView:在GridView控件中渲染上传的电子表格数据

用户选择.xlsx文件并点击上传按钮后,网格就会填充电子表格内容。 列名取自 Excel 文件的第一行,所有后续行都成为网格中的数据行。

如何验证上传的文件?

在生产环境中使用时,处理前应检查文件扩展名和 MIME 类型。 IronXL会对不支持的文件格式抛出异常,但最好在操作文件系统之前,就在控制器级别拒绝错误的上传:

string ext = Path.GetExtension(FileUpload1.FileName).ToLowerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}

您还应该通过IIS请求限制或在调用FileUpload1.FileBytes.Length与阈值的比较来强制执行最大文件大小。

如何访问特定的工作表和单元格区域?

当Excel工作簿包含多个工作表时,您需要通过名称而不是依赖DefaultWorkSheet来定位特定工作表。 IronXL提供一个接受工作表标签名称为字符串的GetWorkSheet方法。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();

当您的应用程序需要显示来自多个工作表的数据或允许用户选择查看哪个工作表时,ToDataSet方法很有用。 返回的DataTable对应于一个Excel工作表,并且表名与工作表标签名匹配。

在ASP.NET C#中使用IronXL将Excel导入GridView:将命名工作表数据绑定到GridView

如何在绑定到 GridView 之前筛选行?

如果您只需要Excel行的一个子集——例如,"Status"列等于"Active"的行——读取由DataView过滤器,并将过滤后的视图绑定到网格:

DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();

DataView.RowFilter接受标准SQL WHERE子句语法——与Microsoft Learn中DataColumn.Expression属性中记录的表达式语言相同——让您无需加载数据库即可进行排序和筛选。

如何比较 Excel GridView 绑定的导入方法?

Excel 到 GridView 绑定的不同方法各有优缺点。 下表总结了最常用的方法,您可以根据自己的情况选择合适的方法。

ASP.NET GridView绑定Excel导入方法的比较
方法需要司机XLS 支持XLSX 支持服务器依赖性代码复杂度
IronXL (ToDataTable)无ne无ne低的
OLEDB / JETACE/JET发动机部分的32/64 位驱动程序高的
Open XML SDK无ne无ne高的
EPPlus无ne无(生产需要商业许可)中等的

IronXL既支持传统的 XLS 格式,也支持现代的 XLSX 格式,无需服务器端安装驱动程序,并且在所列选项中代码复杂度最低。 对于已经使用IronPDFIronOCR等其他Iron Software产品的团队来说,一个Iron Software许可证即可涵盖整个Suite。

如何将 GridView 数据导出回 Excel?

使用IronXL完成从 Excel 到网格再到 Excel 的往返过程同样简洁。 这种模式适用于"下载为 Excel"按钮,使用户能够导出当前在网格中显示的任何内容。

void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}

Response.TransmitFile调用将保存的文件流传输到浏览器,触发下载对话框。 Content-Disposition: attachment头确保浏览器下载而不是尝试内联显示文件。

在ASP.NET C#中使用IronXL将Excel导入GridView:DataTable导出回Excel文件

IronXL导出时常用的格式选项有哪些?

除了原始数据之外, IronXL还允许您在保存之前应用单元格格式。 您可以设置粗体标题、列宽、数字格式和背景颜色:

// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXL.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);

这些格式化调用使用IronXL单元格样式API,其无须Interop即可反映Excel文件格式的对象模型。

下一步计划是什么?

现在,您可以使用IronXL构建一个完整的、无需驱动程序的管道,将 Excel 文件导入ASP.NET GridView,并将 GridView 数据导出回 Excel。 接下来,我们可以在此基础上探索以下几个方面:

-**阅读IronXL文档**以获取完整的 API 参考,包括公式计算、单元格区域操作和图表创建。 -**浏览IronXL代码示例**库,获取涵盖 CSV 导入、密码保护工作簿、条件格式等的即用型代码片段。

对于.NET Core和ASP.NET Core应用程序,相同的IronXL API 可在Razor Pages 和 MVC 控制器中使用。 IronXL ASP.NET Core指南介绍了文件上传处理和依赖注入模式的差异。

在购买之前,先使用IronXL免费试用版测试项目中的所有功能。 试用许可证无需信用卡。

Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户