public ActionResult Import(Models.ExamImportSegmentMark.Import vm, List <string> error = null) { using (var db = new XkSystem.Models.DbContext()) { if (error != null && error.Count > decimal.Zero) { ModelState.AddModelError("", error[0]); } return(View(vm)); } }
public ActionResult Import(Models.ExamImportSegmentMark.Import vm) { var error = new List <string>(); if (error.Count == decimal.Zero) { var file = Request.Files[nameof(vm.UploadFile)]; var fileSave = System.IO.Path.GetTempFileName(); file.SaveAs(fileSave); using (var db = new XkSystem.Models.DbContext()) { try { var ExList = new List <string>() { ".xlsx" }; if (!ExList.Contains(System.IO.Path.GetExtension(file.FileName))) { error.AddError("上传的文件不是正确的EXCLE文件!"); } else { var dt = Code.NpoiHelper.ExcelToDataTable(fileSave, System.IO.Path.GetExtension(file.FileName), string.Empty); if (dt == null) { error.AddError("无法读取上传的文件,请检查文件格式是否正确!"); } else { var tbList = new List <string>() { "排序", "年级", "分数段", "最低百分数", "最高百分数" }; var Text = string.Empty; foreach (var a in tbList) { if (!dt.Columns.Contains(a.ToString())) { Text += a + ","; } } if (!string.IsNullOrEmpty(Text)) { error.AddError("上传的EXCEL内容与预期不一致!错误详细:" + Text); } var gradeList = (from p in db.Table <Basis.Entity.tbGrade>() orderby p.No select new { GradeName = p.GradeName, GradeId = p.Id }).ToList(); var segmentList = from p in db.Table <Exam.Entity.tbExamImportSegmentMark>() where p.tbGrade.IsDeleted == false select p; foreach (DataRow dr in dt.Rows) { var No = dr["排序"].ToString().Trim(); var grade = dr["年级"].ToString().Trim(); var segmentName = dr["分数段"].ToString(); var mixMark = dr["最低百分数"].ToString().Trim(); var maxMark = dr["最高百分数"].ToString().Trim(); if (string.IsNullOrEmpty(grade) || string.IsNullOrEmpty(segmentName)) { continue; } if (gradeList.Where(d => d.GradeName == grade).Count() == decimal.Zero) { var strmes = string.Format("年级不存在({0})", grade); error.AddError(strmes); } var tb = (from p in segmentList where p.tbGrade.GradeName == grade && p.SegmentName == segmentName select p).FirstOrDefault(); if (tb == null) { var tf = new Exam.Entity.tbExamImportSegmentMark(); tf.No = No.ConvertToIntWithNull(); tf.tbGrade = db.Table <Basis.Entity.tbGrade>().Where(d => d.GradeName == grade).FirstOrDefault(); tf.SegmentName = segmentName; tf.MinMark = mixMark.ConvertToDecimal(); tf.MaxMark = maxMark.ConvertToDecimal(); db.Set <Exam.Entity.tbExamImportSegmentMark>().Add(tf); } else { tb.No = No.ConvertToIntWithNull(); tb.MinMark = mixMark.ConvertToDecimal(); tb.MaxMark = maxMark.ConvertToDecimal(); } } if (db.SaveChanges() > decimal.Zero) { error.AddError("导入成功!"); vm.Status = true; XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量添加分数段"); } } } } catch (Exception ex) { error.AddError("上传的EXCEL内容与预期不一致!错误详细:" + ex.Message); } } } return(this.Import(vm, error)); }