C#项目中excel的数据导入功能

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("
", "");
               string ClientName = sheet.GetRow(j + 1).GetCell(1).ToString().Trim().Replace("
", "");
               //创建需要导入数据的实体类对象
               SysClient model = new SysClient();
               model.Id = Id;
               model.CreateTime = CreateTime ;
               model.ClientName = ClientName;
               clientLogic.Inserts(model);//调用写好的添加接口
           }
           return Success("导入成功!");
       }
      
   }

关于导入的功能我这里写的简单了些  当然你也可以根据自己的想法去写 这里我只提供一个思路。

原文地址:https://www.cnblogs.com/yztdd99/p/13344040.html