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技术站