Excel表格导入到数据库

    xiaoxiao2023-11-02  161

    开发工具与关键技术:MVC 作者:文泽钦 撰写时间:2019年5月20日

    上一篇我们写了excel表格上存保存到内存流,现在我们写把保存在内存流当中的数据保存到数据库中。

    保存导入excel表格到数据库,步骤:点击保存到数据库按钮,打开加载成请求导入的路径,关闭加载成,关闭模态框,输出提示,刷新表格。

    //保存导入excel表格数据到数据库 function saveImport() { //打开加载层 var layIndex = layer.load(); //请求保存导入数据的url $.post("SaveImport", function (Msg) { //关闭加载层 layer.close(layIndex); //关闭模态框 $("#modImportExaminee").modal("hide"); //输出 layer.alert(Msg, { icon: 0, title: "提示" }); //刷新 searchTabEmployee(); }); }

    控制器这边的步骤:声明一个返回值为空,捕获异常,记录成功与失败的条数,判断工作 簿的数据是否为空,工作簿不为空则于数据库中的员工信息进行比较,判断是否于数据库中的员工信息重复,如果员工信息与数据库的不重复;这时要考虑先保存用户表,还先保存员工表,我们要新增一个用户信息,所以先保存用户表,再保存员工表。

    public ActionResult SaveImport() { string strMsg = ""; try{ int successCount = 0;//记录保存成功的数据条数 int oldCount = 0;//记录因于数据库已有数据重复而保存失败的数据条数 List<employeeVo> listEmployeeVo = new List<employeeVo>(); if (Session["ImportExcel"] != null) { listEmployeeVo = Session["ImportExcel"] as List<employeeVo>; } for each (employeeVo employee in listEmployeeVo) { //判断数据是否与数据库中已有数据重复 //从数据库中的员工表开始查询 int countEmployee = (from tbEmployee in myModels.PW_Employee //员工表的员工名字等于页面传过来的员工姓名或者 where tbEmployee.EmployeeName == employee.EmployeeName || //员工表中的员工编号等于页面传入的员工编号 tbEmployee.EmployeeNumber == employee.EmployeeNumber select tbEmployee).Count(); //如果员工姓名,员工编号与数据库的不重复 if (countEmployee == 0) { //新增用户表 PW_User dbUser = new PW_User(); //账号 dbUser.UserNuber = employee.EmployeeNumber; //密码 dbUser.Password = Common.AESEncryptHelper.Encrypt(employee.EmployeeNumber); //保存用户表到数据库 myModels.PW_User.Add(dbUser); if (myModels.SaveChanges() > 0) { //获取员工id var UserId = dbUser.UserID; //员工表 PW_Employee dbEmployee = new PW_Employee(); //部门id dbEmployee.DepartmentID = employee.DepartmentID; //职位id dbEmployee.PositionID = employee.PositionID; //员工姓名 dbEmployee.EmployeeName = employee.EmployeeName; //员工编号等于页面传过来的员工编号 dbEmployee.EmployeeNumber = employee.EmployeeNumber; //电话 dbEmployee.Phone = employee.Phone; //手机 dbEmployee.Cellphone = employee.Cellphone; //地址 dbEmployee.Address = employee.Address; //备注 dbEmployee.Remark = employee.Remark; //员工表是根据用户id来保存的,用户id是索引 dbEmployee.UserID = UserId; //保存员工信息表 myModels.PW_Employee.Add(dbEmployee); //判断保存数据是否大于零 if (myModels.SaveChanges() > 0) { successCount++; } else { strMsg = "员工表保存失败"; } }else { strMsg = "用户表保存失败"; } }else { oldCount++; } } strMsg = "导入成功,总共导入" + listEmployeeVo.Count() + "条数据,已经存在的数据有" + oldCount + "条,新增成功的数据有" + successCount + "条!"; } catch (Exception e) { Console.WriteLine(e); strMsg = "数据异常!"; } return Json(strMsg, JsonRequestBehavior.AllowGet); }

    在保存员工表时为什么不用保存员工id,而是用户id,因为员工id是自增的,用户id是员工id的索引,所以保存员工表时用户表里的用户id要与员工表里的员工id保持一致;要是在保存员工表时没有获取用户id,控制器接收到所有要保存的数据了,但会直接跳到数据异常,所以用户id非常重要。 一会我们导入这两条准备好的数据,看看我们写的代码是否保存成功: 上存到内存流,点击导入到数据库: 这里提示保存成功两条,页面刷新了刚刚导入的数据已经在页面上的第一第二条显示了:

    最新回复(0)