~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:VS2015
作者:张海锋
撰写时间:2019/5/25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我们该如何将数据导出到Excel表格呢?首先要将要导出的数据查询出来,
查询完后。创建Excel对象,给导出的Excel设置表头,如下:
//创建Excel对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet();//创建Excel对象工作簿
NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(0);//给sheet添加第一行的头部标题
row1.CreateCell(0).SetCellValue("学号");
row1.CreateCell(1).SetCellValue("姓名");
row1.CreateCell(2).SetCellValue("性别");
row1.CreateCell(3).SetCellValue("班级");
row1.CreateCell(4).SetCellValue("成绩");
row1.CreateCell(5).SetCellValue("合格类型");
当我们把表头设置完后,给sheet的没行添加数据,因为添加的数据有多有少,
所以我们需要用循环的方法:
for (int i = 0; i < listResult.Count; i++)
{
NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 1);//给sheet添加一行
row.CreateCell(0).SetCellValue(listResult[i].StudentNumber);
row.CreateCell(1).SetCellValue(listResult[i].StudentName);
row.CreateCell(2).SetCellValue(listResult[i].StudentSex);
row.CreateCell(3).SetCellValue(listResult[i].ClassName);
row.CreateCell(4).SetCellValue(listResult[i].Achievement.ToString());
row.CreateCell(5).SetCellValue(listResult[i].EligibleType);
}
最后要给文件设置名称:
//输出的文件名称
string fileName = "学生安全教育测试成绩" + DateTime.Now.ToString
("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
//把Excel转化为文件流,输出
MemoryStream BookStream = new MemoryStream();//定义文件流
book.Write(BookStream);//将工作薄写入文件流
BookStream.Seek(0, SeekOrigin.Begin);//输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度
return File(BookStream, "application/vnd.ms-excel", fileName); // 文件类型/文件名称/
导出后的表格: