首先,先在我们的项目资源管理器中找到引用,将NPIO插件引用到项目中
如下
再使用插件方法HSSFWorkbook创建工作簿
//将查询出来的数据转化为对象列表的格式
List<Student> listExaminee = listStu.ToList();
//HSSFWorkbook方法创建工作簿Excel
HSSFWorkbook excelBook = new HSSFWorkbook();
//创建工作表并命名
NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet("考生信息");
工作簿创建好之后,我们就来书写工作表的表头行
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
//创建9列并赋值
row1.CreateCell(0).SetCellValue("学号");
row1.CreateCell(1).SetCellValue("姓名");
row1.CreateCell(2).SetCellValue("身份证号");
row1.CreateCell(3).SetCellValue("性别");
row1.CreateCell(4).SetCellValue("学院");
row1.CreateCell(5).SetCellValue("专业");
row1.CreateCell(6).SetCellValue("年级");
row1.CreateCell(7).SetCellValue("班级");
row1.CreateCell(8).SetCellValue("账号");
创建好表头行之后,再来创建数据行
for (int i = 0; i < listStu.Count(); i++)
{
//创建行
NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i + 1);
rowTemp.CreateCell(0).SetCellValue(listExaminee[i].StudentNumber);
rowTemp.CreateCell(1).SetCellValue(listExaminee[i].StudentName);
rowTemp.CreateCell(2).SetCellValue(listExaminee[i].StudentIDNum);
rowTemp.CreateCell(3).SetCellValue(listExaminee[i].StudentSex);
rowTemp.CreateCell(4).SetCellValue(listExaminee[i].AcademeName);
rowTemp.CreateCell(5).SetCellValue(listExaminee[i].SpecialtyName);
rowTemp.CreateCell(6).SetCellValue(listExaminee[i].GradeName);
rowTemp.CreateCell(7).SetCellValue(listExaminee[i].ClassName);
rowTemp.CreateCell(8).SetCellValue(listExaminee[i].UserNuber);
}
最后一步,使用IO流写出数据。
var fileName = "考生信息" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
//将Excel表格转化为流,输出
//创建文件流
System.IO.MemoryStream bookStream = new MemoryStream();
//文件写入流(向流中写入字节序列)
excelBook.Write(bookStream);
//输出之前调用Seek(偏移量,游标位置) 把0位置指定为开始位置
bookStream.Seek(0, SeekOrigin.Begin);
return File(bookStream, "application/vnd.ms-excel", fileName);
}
到这里,将表格数据导出到Excel工作表的方法就大功告成了,剩下的就是结合JS的使用来完成一键导出了。