把数据导出到Excel表格

作者:老岑
不管你如何导出都离不开数据库,所以不管干嘛!首先第一件事都要先绑定数据库,才能够有数据给你导出。
这是我的一个练习的部分代码
public ActionResult ExportExamineeByID(int AcademeID, int GradeID, int ClassID)
{
try
{
//创建Excel对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet();//创建Excel对象工作簿

            #region 查询考生信息
            var listStudent = from tbStudent in myModel.PW_Student
                              join tbUser in myModel.PW_User on tbStudent.UserID equals tbUser.UserID
                              join tbClass in myModel.SYS_Class on tbStudent.ClassID equals tbClass.ClassID
                              join tbSpecialty in myModel.SYS_Specialty on tbStudent.SpecialtyID equals tbSpecialty.SpecialtyID
                              join tbAcademe in myModel.SYS_Academe on tbStudent.AcademeID equals tbAcademe.AcademeID
                              join tbGrade in myModel.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID
                              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
                              };

就这样要先把涉及到要导出的数据给绑定起来了。
导出Excel表格有三种方法:
方法一 :直接返回json的数据 可用于bootstap表格的绑定。
方法二 :将Excel的数据存入session中。
方法三 :将Excel的数据存入session中 写法和二大致相同只是更加简洁
我就用第三种方法的代码来演示下:
这也是部分代码。
List<SYS_Academe> tbAcademe = myModel.SYS_Academe.ToList();
List<SYS_Specialty> tbSpecialty = myModel.SYS_Specialty.ToList();
List<SYS_Grade> tbGrade = myModel.SYS_Grade.ToList();
List<SYS_Class> tbClass = myModel.SYS_Class.ToList();
List listStudent = new List();
//获取 Excel的数据,放进DataTable中
DataTable dtexcel = ExcelReader.RenderFromExcel(new MemoryStream(fileBytes), 0, 0);
//遍历datatable 获取数据
foreach (DataRow row in dtexcel.Rows)
{
StudentUserInfor student = new StudentUserInfor();
try
{
//学院ID 与学院名称
student.AcademeID = tbAcademe.Where(m => m.AcademeName == row[“学院”].ToString().Trim()).SingleOrDefault().AcademeID;
student.AcademeName = row[“学院”].ToString().Trim();
//专业ID 与专业名称
student.SpecialtyID = tbSpecialty.Where(m => m.AcademeID == student.AcademeID && m.SpecialtyName == row[“专业”].ToString().Trim()).SingleOrDefault().SpecialtyID;
student.SpecialtyName = row[“专业”].ToString().Trim();
//年级ID 与年级名称
student.GradeID = tbGrade.Where(m => m.AcademeID == student.AcademeID && m.GradeName == row[“年级”].ToString().Trim()).SingleOrDefault().GradeID;
student.GradeName = row[“年级”].ToString().Trim();
//班级ID 与班级名称
student.ClassID = tbClass.Where(m => m.AcademeID == student.AcademeID && m.SpecialtyID == student.SpecialtyID && m.ClassName == row[“班级”].ToString().Trim()).SingleOrDefault().ClassID;
student.ClassName = row[“班级”].ToString().Trim();
student.StudentName = row[“姓名”].ToString().Trim();//姓名
student.StudentIDNum = row[“身份证号”].ToString().Trim();//身份证号
student.StudentNumber = row[“学号”].ToString().Trim();//学号
student.StudentSex = row[“性别”].ToString().Trim();//性别
student.UserNuber = row[“账号”].ToString().Trim();//账号
listStudent.Add(student);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
Session[“ExcelFile”] = listStudent;
return Json(true, JsonRequestBehavior.AllowGet);
}
在这里插入图片描述
这就是导出的效果图。
我把这些代码放出来的意思最主要是让你们把这些逻辑给看懂,那样才是真的懂了,因为总是说的话是说不明白的,因为每个人都有自己的想法,我说出来那不是你的,那是我的,所以就放代码出来,让你们有点视觉感,这样比较容易看懂。
好了,这不简单的数据导出就完成了。

猜你喜欢

转载自blog.csdn.net/weixin_44541224/article/details/89971377