《导出Excel》

开发工具与关键技术:VS MVC 
作者:黄姗姗
年级:18级
撰写日期:2019年5月13日

将数据导出Excel的方法和理解
1.视图中的table只是显示数据的查看,导出的内容为:学号,姓名,身份证号,性别,学院,专业,年级,班级,账号这一些,它导出的而不是table,导出Excel的操作和内容,需要在控制器查询出来后在导出Excel
在这里插入图片描述
2.控制器部分:首先要把需要导出的数据查询出来,
在这里插入图片描述
如果有添加条件导出的,就要加筛选条件:
根据选择的学院ID来查询数据:
if (academeId > 0)
{
linqItem = linqItem.Where(s => s.AcademeID == academeId);
}
根据选择的年级id来查询数据:

        if (gradeId > 0)
        {
            linqItem = linqItem.Where(s => s.GradeID == gradeId);
        }

根据选择的班级id来查询数据:
if (classId > 0)
{
linqItem = linqItem.Where(s => s.ClassID == classId);
}
根据选择的学号来查询数据:

        if (!string.IsNullOrEmpty(studentNumber))
        {
            linqItem = linqItem.Where(s => s.StudentNumber.Contains(studentNumber.Trim()));
        }

然后再把数据整理
List<Vo.StudentVo> listExaminee = linqItem.ToList();
3. Excel导出:
1、需要导出Excel的,就需要添加NPOl这个引用:
在这里插入图片描述
2、首先需要创建一个Excel对象,即是创建一个工作簿:
NPOI.HSSF.UserModel.HSSFWorkbook excelBook = new NPOI.HSSF.UserModel.HSSFWorkbook();

 3、在创建这个工作簿的Excel工作表:
     NPOI.SS.UserModel.ISheet sheet = excelBook.CreateSheet("考生信息");
 不明白就打开Excel看看,什么事工作簿和工作表:

工作簿:
在这里插入图片描述
在这里插入图片描述
这个工作簿中的工作表:一个工作簿可以有多个工作表:
工作表:下面三个就是工作表
在这里插入图片描述

4、给工作表添加第一行的标题:
创建第一行的内容
NPOI.SS.UserModel.IRow row1= sheet.CreateRow(0);
将这一行(row1)的内容进行赋值,
这一行(row1)的第一个列的值为:学员
row1.CreateCell(0).SetCellValue(“学号”);//0
这一行(row1)的第二个列的值为:姓名 ,如此类推
row1.CreateCell(1).SetCellValue(“姓名”);//1
row1.CreateCell(2).SetCellValue(“身份证号”);//2
row1.CreateCell(3).SetCellValue(“性别”);//3
row1.CreateCell(4).SetCellValue(“学院”);//4
row1.CreateCell(5).SetCellValue(“专业”);//5
row1.CreateCell(6).SetCellValue(“年级”);//6
row1.CreateCell(7).SetCellValue(“班级”);//7
row1.CreateCell(8).SetCellValue(“账号”);//8
在Excel中的效果为:
在这里插入图片描述
5、利用for进行遍历,将需要的数据进行遍历导出:
遍历已经查询出来的数据listExaminee
for (int i=0;i< listExaminee.Count;i++)
{
创建行,因为上面已经创建了一行标题,所以这里要i+1,从第二行开始,这样每次完成一条完整数据的行Row都要加1,如果不加一,那么就永远只有一行
NPOI.SS.UserModel.IRow rowTemp = sheet.CreateRow(i+1);
将这一行的内容进行赋值, 这里的列的索引是从0开始的,
将学号赋值到这当前行的第0列里面:
//学号
rowTemp.CreateCell(0).SetCellValue(listExaminee[i].StudentNumber);
将姓名赋值到这当前行的第一列里面:
//姓名
rowTemp.CreateCell(1).SetCellValue(listExaminee[i].StudentName);
以此类推
}
6、Excel文件的保存
//输出文件名称,这个为Excel导出后的文件名称
string filename =“考生信息”+ DateTime.Now.ToString(“yyyy-mm-dd-HH-mm-ss-ffff”) + “.xls”;
//把Excel转为流,输出
//创建流
System.IO.MemoryStream bookStream = new System.IO.MemoryStream();
//将工作簿写入流中
excelBook.Write(bookStream);
//输出之前调用Seek(偏移量,游标位置) 把0位置指定为开始位置
bookStream.Seek(0,System.IO.SeekOrigin.Begin);
//返回的类型 ,bookStream为流,application/ vnd.ms-excel 是什么文件类型的意思,这个是Excel文件类型,filename为浏览器下载下来的Excel文件名称
return File(bookStream, “application/vnd.ms-excel”, filename);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值