作者:李哲定
撰写时间:2020年8月7日
一. 思路上的总结
首先,就是步骤,在MVC里面,新建一个文件夹,然后在鼠标右键点击添加类,类的下面有一个名为数据的选项,然后添加数据库中的数据进去,便方可使用这些数据,然后,再在Controllers新建一个控制器,再建一个视图,进入视图,然后把基础的CSS部分弄好,然后,回到控制器,先打好查询需要导出的数据代码,之后还剩五部分
1.就是创建Excel对象(想要导出的数据)
2.创建Excel对象工作簿(这是要导出的地方)
3.给sheet添加第一行的头部标题,每行添加数据
4.输出,文件的类型,名称
5.最后就是去到视图去写好批量导出的按钮点击事件导入的不同之处在于导入按钮的点击事件,需要显示加载层,其他也是一样的批量导入
二.代码上的总结
1.控制器上查询代码的一些总结
#region 查询需要导出的数据
ListlistStudent = (from tbStudent in myModel.PW_Student
join tbAcademe in myModel.SYS_Academe ontbStudent.AcademeID equals
tbAcademe.AcademeID
join tbGrade in myModel.SYS_Grade ontbStudent.GradeID equals tbGrade.GradeID
join tbClass in myModel.SYS_Class ontbStudent.ClassID equals tbClass.ClassID
join tbUser in myModel.PW_User ontbStudent.UserID equals tbUser.UserID
join tbSpecialty in myModel.SYS_Specialtyon tbStudent.SpecialtyID equals
tbSpecialty.SpecialtyID
where tbUser.ToVoidNo == true
select new StudentUserInfor
{
studentID = tbStudent.studentID,//学生ID
StudentNumber = tbStudent.StudentNumber,//学号
StudentName = tbStudent.StudentName,//学生姓名
StudentIDNum =tbStudent.StudentIDNum,//学生身份证
StudentSex = tbStudent.StudentSex,//学生性别
AcademeName = tbAcademe.AcademeName,//学院
SpecialtyName =tbSpecialty.SpecialtyName,//专业
GradeName = tbGrade.GradeName,//年级
ClassName = tbClass.ClassName,//班级
UserNuber = tbUser.UserNuber,//用户账号
AcademeID = tbStudent.AcademeID,//学院ID
GradeID = tbStudent.GradeID,//年级ID
ClassID = tbStudent.ClassID//班级ID
}).ToList();
//创建Excel对象
NPOI.HSSF.UserModel.HSSFWorkbook.book=new.NPOI.HSSF.UserModel.HSSFWorkbook();
//创建Excel对象工作簿
NPOI.SS.UserModel.ISheetsheet = book.CreateSheet();
//输出的文件名称
string fileName = “考生信息”+
DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”) +".xls";
//把Excel转化为文件流,输出
MemoryStream BookStream = newMemoryStream();//定义文件流
book.Write(BookStream);//将工作薄写入文件流
BookStream.Seek(0,SeekOrigin.Begin);//输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度
return File(BookStream,“application/vnd.ms-excel”, fileName); // 文件类型/文件名称/
总结:
导入导出的思路还有代码,大概就是这样,代码的话,不知道如何解释,因为按照我的学习方法的话就是,懂得怎么写的套路的话,代码应该是不成问题的,但是我上面所打出的那些代码是因为这里的以下代码比较特殊一点,又比较常用,所以才会在这打出来的。