C#实现NPOI的Excel导出详解

C#实现NPOI的Excel导出详解

简介

NPOI是专门用于处理Microsoft Office格式文件的.NET库,可以实现对Excel、Word、PowerPoint等文件的读写操作。在C#项目中,使用NPOI库可以快速实现Excel的导入导出功能。本文将详细讲解如何使用NPOI实现Excel导出功能。

步骤

1. 引入NPOI库

在项目中引入NPOI库,可以使用NuGet或手动添加dll文件等方式来引入,这里以NuGet为例:

PM> Install-Package NPOI

2. 建立Excel文件

使用NPOI时,需要先建立一个Excel文件的实例。此处我们可以先建立一个空的Excel文件,以utf-8编码方式保存到指定位置,代码如下:

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

var workbook = new XSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");

3. 定义表头

在Excel文件中,通常需要先定义表头。可以通过添加一行来实现表头的定义,代码如下:

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

4. 填充数据

根据需要向Excel文件中填充数据。通常先定义一个数据集合,在循环中逐行添加数据,代码如下:

var data = new List<object[]>
{
    new object[] { 1, "张三", 20, "男" },
    new object[] { 2, "李四", 22, "女" },
    new object[] { 3, "王五", 18, "男" },
    new object[] { 4, "赵六", 25, "女" },
};

for (int i = 0; i < data.Count; i++)
{
    var dataRow = sheet.CreateRow(i + 1);
    dataRow.CreateCell(0).SetCellValue(data[i][0].ToString());
    dataRow.CreateCell(1).SetCellValue(data[i][1].ToString());
    dataRow.CreateCell(2).SetCellValue(data[i][2].ToString());
    dataRow.CreateCell(3).SetCellValue(data[i][3].ToString());
}

5. 导出Excel文件

完成数据填充后,使用FileStream将Excel文件保存到指定路径。这里将Excel文件保存到桌面上,代码如下:

using (var fileStream = new FileStream(@"C:\Users\username\Desktop\example.xlsx", FileMode.Create))
{
    workbook.Write(fileStream);
}

至此,一个Excel文件的导出功能就实现了。

示例

以下是使用NPOI实现导出学生信息表格的示例代码。

导出学生信息

public static void ExportStudentInfo(List<Student> students)
{
    var workbook = new XSSFWorkbook();
    var sheet = workbook.CreateSheet("学生信息");

    var headerRow = sheet.CreateRow(0);
    headerRow.CreateCell(0).SetCellValue("学号");
    headerRow.CreateCell(1).SetCellValue("姓名");
    headerRow.CreateCell(2).SetCellValue("性别");
    headerRow.CreateCell(3).SetCellValue("年龄");
    headerRow.CreateCell(4).SetCellValue("专业");

    for (int i = 0; i < students.Count; i++)
    {
        var dataRow = sheet.CreateRow(i + 1);
        dataRow.CreateCell(0).SetCellValue(students[i].Id);
        dataRow.CreateCell(1).SetCellValue(students[i].Name);
        dataRow.CreateCell(2).SetCellValue(students[i].Gender);
        dataRow.CreateCell(3).SetCellValue(students[i].Age.ToString());
        dataRow.CreateCell(4).SetCellValue(students[i].Major);
    }

    using (var fileStream = new FileStream(@"C:\Users\username\Desktop\student_info.xlsx", FileMode.Create))
    {
        workbook.Write(fileStream);
    }
}

导出订单信息

public static void ExportOrderInfo(List<Order> orders)
{
    var workbook = new XSSFWorkbook();
    var sheet = workbook.CreateSheet("订单信息");

    var headerRow = sheet.CreateRow(0);
    headerRow.CreateCell(0).SetCellValue("订单号");
    headerRow.CreateCell(1).SetCellValue("客户姓名");
    headerRow.CreateCell(2).SetCellValue("商品名称");
    headerRow.CreateCell(3).SetCellValue("商品数量");
    headerRow.CreateCell(4).SetCellValue("订单金额");

    for (int i = 0; i < orders.Count; i++)
    {
        var dataRow = sheet.CreateRow(i + 1);
        dataRow.CreateCell(0).SetCellValue(orders[i].OrderId);
        dataRow.CreateCell(1).SetCellValue(orders[i].CustomerName);
        dataRow.CreateCell(2).SetCellValue(orders[i].ProductName);
        dataRow.CreateCell(3).SetCellValue(orders[i].ProductCount.ToString());
        dataRow.CreateCell(4).SetCellValue(orders[i].OrderAmount.ToString());
    }

    using (var fileStream = new FileStream(@"C:\Users\username\Desktop\order_info.xlsx", FileMode.Create))
    {
        workbook.Write(fileStream);
    }
}

以上示例代码分别演示了导出学生信息和订单信息的操作,可以根据实际需求进行修改和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现NPOI的Excel导出详解 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 如何搭建新的WPF项目框架

    如何搭建新的WPF项目框架 搭建新的WPF项目框架可以帮助我们更好地组织和管理WPF应用程序的代码。本文将提供详细的“如何搭建新的WPF项目框架”的完整攻略,包括如何创建项目结构、如何添加基础类以及两个示例。 创建项目结构 要创建新的WPF项目框架,我们需要执行以下步骤: 创建一个新的WPF应用程序项目。 在项目中创建一个名为“Infrastructure”…

    C# 2023年5月15日
    00
  • Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结

    Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结 Kotlin是一种基于JVM的静态类型编程语言,被 Google 选定其为 Android 开发的官方编程语言,因为 Kotlin 代码更短、更简洁,同时具备 强类型检查 和 函数式编程 的特性。 在Kotlin中,我们可以学习到许多有关变量定义、函数扩展、Parcelable序…

    C# 2023年6月7日
    00
  • C#前端验证和后台验证代码实例

    下面是关于”C#前端验证和后台验证代码实例”的完整攻略: 前言 在开发Web应用程序时,数据的正确性对整个应用程序的安全具有重要意义。为了提高Web应用程序的健壮性,我们需要在前端和后台分别对用户输入的数据进行验证。本文将演示C#如何通过前端验证和后台验证确保用户输入的数据的准确性。 前端验证 在前端验证中,我们使用JavaScript代码来检查用户输入的数…

    C# 2023年5月31日
    00
  • C#如何优雅的对WinForm窗体应用程序进行权限控制

    C#中对WinForm窗体应用程序进行权限控制的优雅方法主要有以下几个步骤: 1. 创建用户登录界面 在用户打开程序时,首先需要提供一个登录窗口,将用户的账号和密码发送给服务器验证。可以使用WinForm中的TextBox、Label和Button等工具来创建这个窗口。 2. 向接口获取用户权限信息 用户登录成功后,需要将用户的身份信息发送给服务器来获取用户…

    C# 2023年5月31日
    00
  • ASP.NET Core使用JWT自定义角色并实现策略授权需要的接口

    ASP.NET Core使用JWT自定义角色并实现策略授权需要的接口攻略 ASP.NET Core是一个跨平台的Web应用程序框架,它可以帮助我们构建高性能的Web应用程序。JWT是一种用于身份验证和授权的开放标准,它可以帮助我们实现安全的Web应用程序。本攻略将详细介绍如何使用JWT自定义角色并实现策略授权需要的接口。 环境要求 在进行ASP.NET Co…

    C# 2023年5月17日
    00
  • 通俗易懂的C#之反射教程

    通俗易懂的C#之反射教程 什么是反射 反射是 .NET 框架中的一项功能,它允许程序员在编译时不知道类型的情况下,也能够使用对象的方法。简单来说就是让程序在运行时获取类型的信息,并且能够动态地创建对象、调用方法和获取或设置成员属性。 反射的作用 在实际编程中,反射使用频率非常高。它主要有以下几个作用: 动态加载程序集 在程序运行时检查类型信息 动态地创建对象…

    C# 2023年5月31日
    00
  • mvc C# JavaScript LigerUI oracle实现用户的注册、登陆验证、登陆

    实现用户的注册、登陆验证和登陆的过程中,我们可以使用以下技术: MVC框架:它可以帮助我们轻松地管理代码和文件,并且可以轻松地将应用程序升级到不同的版本。 C#语言:它是一种强类型的语言,广泛用于.NET平台上的应用程序开发。 JavaScript:它是一种客户端编程语言,广泛用于Web开发。 LigerUI:它是一个开源的跨平台Web前端UI框架,受到了广…

    C# 2023年5月15日
    00
  • C#使用SqlServer作为日志数据库的设计与实现

    C#使用SqlServer作为日志数据库的设计与实现,可以采用以下步骤: 1. 创建数据库表格 首先在SqlServer中创建一个数据库,并在其中创建一个用于存储日志的表格。例如: create table LogInfo( ID int identity(1,1) primary key, LogContent nvarchar(4000) not nul…

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