C#实现NPOI的Excel导出详解

yizhihongxing

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日

相关文章

  • Asp.net core程序中使用微软的依赖注入框架

    Asp.net core程序中使用微软的依赖注入框架 在Asp.net core程序中,使用微软的依赖注入框架可以方便地管理应用程序中的依赖项。在本攻略中,我们将介绍如何在Asp.net core程序中使用微软的依赖注入框架,并提供两个示例说明。 步骤一:安装依赖注入框架 在项目中安装依赖注入框架 在项目中安装依赖注入框架。可以使用NuGet包管理器或者在项…

    C# 2023年5月16日
    00
  • ASP.NET AJAX 4.0的模版编程(Template Programming)介绍

    ASP.NET AJAX 4.0的模板编程(Template Programming)是一种用于生成动态HTML内容的技术。在本文中,我们将介绍ASP.NET AJAX 4.0的模板编程,包括模板引擎、模板语法和示例代码。 模板引擎 ASP.NET AJAX 4.0的模板引擎是一种用于生成动态HTML内容的技术。它使用一种类似于ASP.NET的语法来定义模板…

    C# 2023年5月15日
    00
  • 如何使用C#从word文档中提取图片

    要从Word文档中提取图片,可以使用C#语言中的Microsoft Office Interop库来实现。这个库提供了访问Office文件和应用程序的接口,可以用于创建、读取、编辑和保存Word文档等各种操作。这里我们将讲解如何使用C#从Word文档中提取图片,具体步骤如下: 步骤1:引用Interop库 首先,需要设置项目的引用,以便可以在C#中使用Off…

    C# 2023年6月6日
    00
  • C#实现HTTP访问类HttpHelper的示例详解

    C#实现HTTP访问类HttpHelper的示例详解 1. 什么是HttpHelper类 HttpHelper类是一个用于实现HTTP访问的工具类,通过该类可以实现Http的GET、POST、PUT、DELETE等请求。 2. 如何使用HttpHelper类 使用HttpHelper类需要先引入命名空间: using System.Net; 接着,可以通过以…

    C# 2023年5月15日
    00
  • C#实现将应用程序设置为开机启动的方法

    下面我会详细讲解如何用 C# 实现将应用程序设置为开机启动的方法。 方法一:使用注册表 Windows 操作系统允许我们通过修改注册表的方式来设置开机启动程序。下面是具体的步骤: 打开注册表编辑器。在 Windows 搜索框中键入 “regedit” 并回车即可打开。 找到以下注册表路径:HKEY_CURRENT_USER\SOFTWARE\Microsof…

    C# 2023年6月7日
    00
  • 在Winform分页控件中集成保存用户列表显示字段及宽度调整设置

    在Winform的分页控件里面,我们提供了很多丰富的功能,如常规分页,中文转义、导出Excel、导出PDF等,基于DevExpress的样式的分页控件,我们在其上面做了不少封装,以便更好的使用,其中就包括集成保存用户列表显示字段及宽度调整设置。本篇随笔介绍这个实现的过程,通过在当前程序中序列化方式存储一个记录用户设置的文件,提供介质的存储和加载处理。 1、集…

    C# 2023年5月6日
    00
  • webpack-dev-server核心概念案例详解

    webpack-dev-server核心概念案例详解 webpack-dev-server是一个基于Node.js的开发服务器,它可以实时重新加载页面,提高开发效率。本文将详细讲解webpack-dev-server的核心概念,并提供两个示例。 1. 安装webpack-dev-server 在使用webpack-dev-server之前,需要先安装它。可以…

    C# 2023年5月15日
    00
  • Asp.Net MVC学习总结之过滤器详解

    Asp.Net MVC学习总结之过滤器详解 在Asp.Net MVC中,过滤器是一种用于在请求处理过程中执行某些操作的机制。过滤器可以用于实现各种功能,例如身份验证、授权、日志记录等。本文将详细介绍Asp.Net MVC中的过滤器,并提供两个示例说明。 过滤器类型 在Asp.Net MVC中,有以下几种过滤器类型: Authorization Filter:…

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