把數據導出到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對象工做簿web

#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);
}
在這裏插入圖片描述
這就是導出的效果圖。
我把這些代碼放出來的意思最主要是讓大家把這些邏輯給看懂,那樣纔是真的懂了,由於老是說的話是說不明白的,由於每一個人都有本身的想法,我說出來那不是你的,那是個人,因此就放代碼出來,讓大家有點視覺感,這樣比較容易看懂。
好了,這不簡單的數據導出就完成了。數據庫