做者:老岑
無論你如何導出都離不開數據庫,因此無論幹嗎!首先第一件事都要先綁定數據庫,纔可以有數據給你導出。
這是個人一個練習的部分代碼
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);
}
這就是導出的效果圖。
我把這些代碼放出來的意思最主要是讓大家把這些邏輯給看懂,那樣纔是真的懂了,由於老是說的話是說不明白的,由於每一個人都有本身的想法,我說出來那不是你的,那是個人,因此就放代碼出來,讓大家有點視覺感,這樣比較容易看懂。
好了,這不簡單的數據導出就完成了。數據庫