ASP.NET使用NPOI导出Excel

1. 简介

在ASP.NET开发中,我们经常需要将数据导出为Excel文件,以便用户可以方便地查看和处理数据。NPOI是一个开源的.NET库,它提供了一种简单和灵活的方式来生成和操作Excel文件。

本文将介绍如何使用NPOI库在ASP.NET中导出Excel文件,并提供相关的代码示例。

2. 安装和引用NPOI库

首先,我们需要先将NPOI库添加到我们的ASP.NET项目中。

我们可以通过NuGet包管理器来安装NPOI库。打开Visual Studio,选择项目,右键单击项目名称,然后选择“管理NuGet程序包”。在搜索框中输入“NPOI”,然后点击“安装”按钮来安装NPOI库。

安装完成后,我们需要在代码中引用NPOI库。在需要使用NPOI的文件中,添加以下引用:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;

3. 创建Excel文档并添加数据

使用NPOI库创建和操作Excel文档是非常简单的。下面是一个示例,演示了如何创建一个Excel文档,并向其中添加一些数据。

// 创建工作簿
IWorkbook workbook = new XSSFWorkbook();

// 创建工作表
ISheet sheet1 = workbook.CreateSheet("Sheet1");

// 创建标题行
IRow headerRow = sheet1.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("ID");
headerRow.CreateCell(1).SetCellValue("Name");
headerRow.CreateCell(2).SetCellValue("Email");

// 添加数据行
IRow dataRow = sheet1.CreateRow(1);
dataRow.CreateCell(0).SetCellValue(1);
dataRow.CreateCell(1).SetCellValue("John Doe");
dataRow.CreateCell(2).SetCellValue("john.doe@example.com");

// 保存文件
using (FileStream stream = new FileStream("output.xlsx", FileMode.Create))
{
    workbook.Write(stream);
}

上述代码创建了一个工作簿,并在其中创建了一个工作表。然后,通过CreateCell方法,可以创建和设置单元格的值。最后,通过Write方法,可以将工作簿保存到文件中。

4. 导出数据为Excel文件

一旦我们向Excel文档中添加了数据,我们可以将其导出为一个Excel文件。下面是一个示例,演示了如何将数据导出为Excel文件并返回给用户进行下载。

public ActionResult ExportExcel()
{
    // 创建工作簿
    IWorkbook workbook = new XSSFWorkbook();

    // 创建工作表
    ISheet sheet1 = workbook.CreateSheet("Sheet1");

    // 创建标题行
    IRow headerRow = sheet1.CreateRow(0);
    headerRow.CreateCell(0).SetCellValue("ID");
    headerRow.CreateCell(1).SetCellValue("Name");
    headerRow.CreateCell(2).SetCellValue("Email");

    // 添加数据行
    IRow dataRow = sheet1.CreateRow(1);
    dataRow.CreateCell(0).SetCellValue(1);
    dataRow.CreateCell(1).SetCellValue("John Doe");
    dataRow.CreateCell(2).SetCellValue("john.doe@example.com");

    // 保存到内存中
    MemoryStream stream = new MemoryStream();
    workbook.Write(stream);

    // 设置响应头
    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment;filename=output.xlsx");
    Response.BinaryWrite(stream.ToArray());
    Response.End();

    return new EmptyResult();
}

上述代码中的ExportExcel方法将数据导出为Excel文件,并通过设置响应头和写入响应流的方式,将文件返回给用户进行下载。

5. 序列图

下面是一个使用Mermaid语法标识的序列图,演示了导出Excel文件的过程。

sequenceDiagram
    participant Client
    participant Server
    Client->>Server: 发送导出请求
    Server->>Server: 创建工作簿和工作表
    Server->>Server: 添加标题行和数据行
    Server->>Server: 保存文件到内存中
    Server->>Client: 返回Excel文件
    Client->>Client: 下载Excel文件

序列图展示了客户端向服务器发送导出请求,服务器创建Excel文件并添加数据