NET页面导出Excel实例代码

首先,要实现.NET页面导出Excel功能,需要用到以下两个类库:

  • NPOI:用于操作Excel文档的类库。
  • Microsoft.AspNet.WebApi.Core:用于处理Web API相关请求与响应的类库。

下面是一个.NET页面导出Excel的典型实现步骤:

步骤一:创建Web API控制器

在.NET项目中创建一个Web API控制器,用于处理导出Excel的请求。例如,我们可以创建一个名为“ExportExcelController”的类,并添加一个名为“ExportUserList”的Action:

public class ExportExcelController : ApiController
{
    [HttpGet]
    public HttpResponseMessage ExportUserList()
    {
        //TODO: 导出Excel的代码逻辑
    }
}

步骤二:创建Excel文档并填充数据

在“ExportUserList”方法中,我们需要使用NPOI类库创建一个Excel文档,并将数据填充到工作表中。以下代码展示了如何创建一个包含用户信息的Excel文档:

[HttpGet]
public HttpResponseMessage ExportUserList()
{
    //创建Excel文档和工作表
    var workbook = new HSSFWorkbook();
    var sheet = workbook.CreateSheet("UserList");

    //填充表头行
    var headerRow = sheet.CreateRow(0);
    headerRow.CreateCell(0).SetCellValue("ID");
    headerRow.CreateCell(1).SetCellValue("UserName");
    headerRow.CreateCell(2).SetCellValue("Age");

    //填充数据行
    var userList = GetUserList(); //从数据库中获取用户列表
    for (int i = 0; i < userList.Count(); i++)
    {
        var row = sheet.CreateRow(i + 1);
        row.CreateCell(0).SetCellValue(userList[i].Id);
        row.CreateCell(1).SetCellValue(userList[i].UserName);
        row.CreateCell(2).SetCellValue(userList[i].Age);
    }

    //保存Excel文档并返回HttpResponseMessage
    var ms = new MemoryStream();
    workbook.Write(ms);
    var response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new ByteArrayContent(ms.ToArray());
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = "UserList.xls";
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
    response.Content.Headers.ContentLength = ms.Length;
    return response;
}

在上面的代码中,“GetUserList”方法是一个自定义的方法,用于从数据库中获取用户列表。

步骤三:处理HttpResponseMessage

创建Excel文档并填充数据后,我们需要将生成的Excel文档通过HttpResponseMessage返回给浏览器,让用户可以下载。上面的代码中,我们使用了“ByteArrayContent”对象将Excel文档转换成二进制流,然后将其附加到HttpResponseMessage的Content属性中。在Content的Headers中,我们指定了下载文件的名称和类型。

另外,在导出Excel,并将其返回给前端时,必须要处理好异常情况,例如出现了导出异常时,需要给出对应的错误提示信息。

到这里,一个.NET页面导出Excel的实例代码就完成了。

下面是一些更加详细的实现示例:

示例1: 以ASP.NET MVC应用程序的方式实现.NET页面导出Excel

public ActionResult Export()
{
    var users = new List<UserDto>
    {
        new UserDto {Id = 1, Name = "Alice", Age = 18},
        new UserDto {Id = 2, Name = "Bob", Age = 20},
        new UserDto {Id = 3, Name = "Charlie", Age = 33}
    };

    using(var workbook = new HSSFWorkbook())
    {
        var sheet = workbook.CreateSheet("Users");

        var header = sheet.CreateRow(0);
        header.CreateCell(0).SetCellValue("Id");
        header.CreateCell(1).SetCellValue("Name");
        header.CreateCell(2).SetCellValue("Age");

        var rowIndex = 1;
        foreach(var user in users)
        {
            var row = sheet.CreateRow(rowIndex++);
            row.CreateCell(0).SetCellValue(user.Id);
            row.CreateCell(1).SetCellValue(user.Name);
            row.CreateCell(2).SetCellValue(user.Age);
        }

        const string fileName = "Users.xls";
        var contentType = "application/vnd.ms-excel";
        Response.ContentType = contentType;
        Response.AddHeader("content-disposition", $"attachment;filename={fileName}");
        workbook.Write(Response.OutputStream);
        Response.Flush();
        Response.End();
    }

    return null;
}

此示例将在MVC应用程序中实现.NET页面导出Excel功能。主要的工作是使用HSSFWorkbook类创建工作簿,使用HSSFSheet创建工作表,将表头、数据导入工作表,并将其写入到HTTP响应中。

示例2:使用.NET Core 2.2实现.NET页面导出Excel

[HttpGet("export")]
public IActionResult Export()
{
    var users = new List<UserDto>
    {
        new UserDto {Id = 1, Name = "Alice", Age = 18},
        new UserDto {Id = 2, Name = "Bob", Age = 20},
        new UserDto {Id = 3, Name = "Charlie", Age = 33}
    };

    var fileName = "Users.xlsx";
    var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    var fileDownloadName = WebUtility.UrlEncode(fileName);
    var workbook = new XSSFWorkbook();
    var sheet = workbook.CreateSheet("Users");

    var headerRow = sheet.CreateRow(0);
    headerRow.CreateCell(0).SetCellValue("Id");
    headerRow.CreateCell(1).SetCellValue("Name");
    headerRow.CreateCell(2).SetCellValue("Age");

    var rowIndex = 1;
    foreach (var user in users)
    {
        var row = sheet.CreateRow(rowIndex++);
        row.CreateCell(0).SetCellValue(user.Id);
        row.CreateCell(1).SetCellValue(user.Name);
        row.CreateCell(2).SetCellValue(user.Age);
    }

    using (var memoryStream = new MemoryStream())
    {
        workbook.Write(memoryStream);
        var content = memoryStream.ToArray();
        return File(content, contentType, fileName);
    }
}

此示例演示如何在.NET Core应用程序中实现.NET页面导出Excel功能。与MVC应用程序的示例不同,此示例使用了XSSFWorkbook和XSSFSheet类(是EPPlus包中的Excel)来创建工作簿和工作表。此外,在.NET Core应用程序中,文件下载名称需要进行URL编码。最后,使用File()方法来返回Byte数组,这代表创建的Excel文件内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NET页面导出Excel实例代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#安装OpenCvSharp4的实现步骤

    C#安装OpenCvSharp4的实现步骤可以大概分为以下几个步骤: 安装Visual StudioOpenCvSharp4需要依赖Visual Studio,因此需要先安装Visual Studio。可以从Microsoft官网下载对应版本的Visual Studio进行安装。 安装OpenCvSharp4 NuGet包在Visual Studio中,打开…

    C# 2023年6月3日
    00
  • C# dll代码混淆加密的实现

    C# dll代码混淆加密通常用于保护程序的知识产权及安全,下面我将详细为您讲解实现的具体步骤和注意事项。 步骤一:选择合适的混淆工具 目前市面上有很多混淆工具,如ConfuserEx、CodeGen、SmartAssembly等。需要根据自己的需求和技术水平选择合适的工具。在此以ConfuserEx为例进行说明。 步骤二:下载ConfuserEx并解压缩 可…

    C# 2023年5月14日
    00
  • C#温故而知新系列教程之闭包

    C#温故而知新系列教程之闭包 什么是闭包 闭包(Closure),是指一个函数(或者委托)及其相关信息的引用组合而成的实体。在C#中,闭包可以理解为一个函数以及该函数所引用的外部变量组合成的一个实体。 假设有一个函数AddValue(),可以接受一个整型参数,并返回一个函数,该返回的函数内部可以将接受的参数与之前的参数累加并返回累加的结果。使用闭包,可以将之…

    C# 2023年6月1日
    00
  • C#资源释放方法实例分析

    C#资源释放方法实例分析 在使用C#编写程序时,资源释放问题是一个非常重要的问题。如果不恰当地处理资源释放,可能会导致内存泄漏等问题,影响程序性能和稳定性。本文将详细介绍C#中的资源释放方法,以及如何在代码中进行实际应用。 1. 资源释放的方法 C#中的资源释放主要分为两种方式:手动释放和自动释放。 1.1 手动释放 手动释放是指程序员在编写代码时,手动调用…

    C# 2023年5月15日
    00
  • 在.NET7中使用MQTTnet简单实现MQTT通信

    一、MQTT简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,主要用于物联网设备间的通信。MQTT协议采用客户端/服务器架构,支持发布/订阅模式和点对点模式,具有高效、可靠、灵活等优点。 MQTT协议主要由三个要素构成:发布者(publisher)、代理服务器(broker)和订阅者(subs…

    C# 2023年4月18日
    00
  • C# List介绍及具体用法

    C# List介绍及具体用法 List是什么? List是C#语言中的一种基本的集合类型,位于System.Collections.Generic命名空间下。 List是一种动态数组,与普通数组相比,List可以进行动态扩容,并且可以存储任意类型的数据。List提供了一系列操作元素的方法,例如添加、删除、排序等,是C#中常用的集合类型之一。 List的创建与…

    C# 2023年6月1日
    00
  • C#短时间内产生大量不重复的随机数

    产生大量不重复的随机数需要满足两个条件:随机性和不重复性,下面就使用C#语言,给出一种实现这个目标的攻略。 第一步:定义一个列表 在产生随机数时,需要先定义一个列表,用来存储已经产生过的随机数。因为需要保证随机数不重复,这个列表会存储已经被产生的随机数,每次产生一个新的随机数时,需要和这个列表中的所有元素进行比较,以确保不重复。具体实现代码如下: List&…

    C# 2023年6月1日
    00
  • 解析asp.net的分页控件

    下面是详细的讲解“解析asp.net的分页控件”的攻略: 背景 在ASP.NET应用程序中,经常需要处理大型数据集,使其分页显示在Web页面上。ASP.NET分页控件允许您轻松地完成此任务,自动为您处理分页逻辑。 步骤 第一步:添加分页控件 在ASP.NETWeb应用的UI设计界面中,您可以从工具箱中添加控件。在此过程中,您将找到一个分页控件用于访问和操作分…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部