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日

相关文章

  • C#通过属性名字符串获取、设置对象属性值操作示例

    下面来详细讲解一下“C#通过属性名字符串获取、设置对象属性值操作示例”的完整攻略。 1. 获取属性值 我们可以使用反射来获取对象的属性值。示例代码如下: var obj = new MyClass(); var propName = "Prop1"; // 要获取的属性名 var propValue = obj.GetType().Get…

    C# 2023年6月1日
    00
  • WPF实现文本描边+外发光效果的示例代码

    WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的技术。WPF提供了丰富的UI元素和效果,可以轻松实现文本描边和外发光效果。本文将提供WPF实现文本描边和外发光效果的完整攻略,包括创建WPF应用程序、实现文本描边、实现外发光效果、示例等。 创建WPF应用程序 要创建WPF应用程序,可以使用Vis…

    C# 2023年5月15日
    00
  • c#完美截断字符串代码(中文+非中文)

    C#完美截断字符串代码(中文+非中文)攻略 概述 在C#中,对一个字符串进行截断,即取其中一部分,是一个比较常见的操作。本文将介绍一种完美的字符串截断方法,支持中文和非中文的字符串。 方法 string SubstringSmart(string str, int length) { if (string.IsNullOrEmpty(str)) { retu…

    C# 2023年5月31日
    00
  • CodeBuilder 3 预览版发布

    CodeBuilder是一款强大的代码生成工具,目前发布了 3.0 preview 2,大家可以前去下载体验 官方主页。 1、多种数据源 基于 ADO.NET 的数据驱动 基于 Fireasy 3,支持从 SqlServer、MySql、Oracle、Firebird、PostgreSql、SQLite、达梦、人大金仓、神通数据库,以及 OleDb 驱动。可…

    C# 2023年4月22日
    00
  • AOP从静态代理到动态代理(Emit实现)详解

    AOP从静态代理到动态代理(Emit实现)详解 概述 AOP(面向切面编程)是一种程序设计思想,可以在不改变原有代码逻辑的情况下,通过在程序中动态地新增一些逻辑代码,来实现例如日志记录、权限控制、性能监测等功能。而在 AOP 中,一个被增强的方法称为“切入点”,对该切入点进行增强的代码称为“切面”。 在实现 AOP 功能时,静态代理和动态代理是两种比较常见的…

    C# 2023年6月6日
    00
  • 如何利用C#通过sql语句操作Sqlserver数据库教程

    如何利用C#通过Sql语句操作Sql Server数据库 在C#程序中,我们可以通过Sql语句对Sql Server数据库进行增、删、改、查等操作。下面是详细的操作步骤和示例。 准备工作 在开始之前,我们需要确保以下条件已满足: 已安装Sql Server数据库 已安装Visual Studio开发环境 C#项目已建立 连接数据库 我们需要使用SqlConn…

    C# 2023年5月15日
    00
  • C#常见应用函数实例小结

    关于“C#常见应用函数实例小结”的完整攻略,可以按照以下步骤进行: 1. 确定需求 首先需要明确要实现的功能。比如,我们可以假设需要实现以下需求: 根据用户输入的字符串,判断其是否为数字; 给定一个句子,在其中查找某个子字符串,并将其替换为另一个字符串。 2. 查找相关函数 在确定了需求之后,需要查找相关的函数来实现。可以通过查阅C#官方文档、搜索引擎等方式…

    C# 2023年5月31日
    00
  • 简单了解.NET Framework

    下面是关于“简单了解.NET Framework”的完整攻略,包含两个示例。 1. .NET Framework简介 .NET Framework是一个由Microsoft开发的应用程序框架,它提供了一组用于开发和运行Windows应用程序的技术。.NET Framework包括一个运行时环境(Common Language Runtime)和一个类库(Fr…

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