C#项目中excel的数据导入功能
实现思路
1.点击按钮的时候,将文件上传并指定上传路劲
2.文件上传成功后,这个文件就在服务器中的一个文件里面
3.将上传的文件当成一个“移动的数据库”,利用NPOI获取excel表中的数据
4.通过for循环遍历表中 每一行的的值 再调用添加的接口将数据添加到数据库中去
注意:下面的代码我只展示控制器里的代码 其他层的代码就不展示了
[HttpPost] public ActionResult Upload() { var file = Request.Files[0]; //拿到前端上传的文件 var Isxls = Path.GetExtension(file.FileName).ToString().ToLower(); if (Isxls != ".xls" && Isxls != ".xlsx") //判断文件格式 { return Error(); } if (file == null) { return Error("文件无内容,请检查后重新上传~"); } string userId = OperatorProvider.Instance.Current.UserId; //这里是获取当前登录用户的ID 可以不要 我是用来拼接上传后文件的名称 string virtualPath = Path.Combine("/Content/Uploads/Files", userId + Path.GetExtension(file.FileName)); string filePath = Request.MapPath(virtualPath); if (FileUtil.Exists(filePath))//判断文件是否存在 { FileUtil.Delete(filePath); } file.SaveAs(filePath);//这里是拿到上传后的文件 NPOI.XSSF.UserModel.XSSFWorkbook workBook = new NPOI.XSSF.UserModel.XSSFWorkbook(new FileStream(Path.GetFullPath(filePath), FileMode.Open)); NPOI.XSSF.UserModel.XSSFSheet sheet = (NPOI.XSSF.UserModel.XSSFSheet)workBook.GetSheetAt(0); int rowCount = sheet.LastRowNum; //开始添加 for (int j = 0; j < rowCount; j++) { //获取excel每一行的值 string Id = Guid.NewGuid().ToString(); string CreateTime = sheet.GetRow(j + 1).GetCell(0).ToString().Trim().Replace("\n", ";"); string ClientName = sheet.GetRow(j + 1).GetCell(1).ToString().Trim().Replace("\n", ";"); //创建需要导入数据的实体类对象 SysClient model = new SysClient(); model.Id = Id; model.CreateTime = CreateTime ; model.ClientName = ClientName; clientLogic.Inserts(model);//调用写好的添加接口 } return Success("导入成功!"); } }
关于导入的功能我这里写的简单了些 当然你也可以根据自己的想法去写 这里我只提供一个思路。