.Net Core使用miniExcel实现导入导出

发布时间 2023-08-23 21:53:08作者: 如果生活可以ctrl+z

.Net Core使用miniExcel实现导入导出

首先,引入NuGet包:MiniExcel第三方插件

IMG_256

一、导入

       public int UpLoadExecl()
      {
           //获取文件数据,[0]代表只能上传一个文件,如果要传递多个文件注意:文件名不能重复
           var formInfor = HttpContext.Request.Form.Files[0];

           //using的作用是生命周期结束后释放内存
           //在内存中开辟一道空间
          using MemoryStream memory = new MemoryStream();

           //将文件数据复制到内存空间
           formInfor.CopyTo(memory);

           //从内存空间中找出UserModel实体信息
           var list = memory.Query<UserModel>();

           //添加至数据库
           db.UserModel.AddRange(list);

           //并保存返回给前端受影响行数
           return Ok(db.SaveChanges());
      }

二、导出

 public IActionResult SaveAsExecl()
      {
           //从数据库取出要导出的数据
           var list = db.UserModel.ToList();

           //在内存中开辟一道空间
           var memory = new MemoryStream();

           //将数据保存到memory(内存)空间
           memory.SaveAs(list);

           //将memory的读取指针重置到流的开头。这一步是为了确保在返回memory之前,读取操作可以从流的开头开始。
           memory.Seek(0, SeekOrigin.Begin);

           //创建一个FileStreamResult对象,用于将memory作为文件流返回。指定返回的文件类型为Excel文件,文件类型:(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet),并设置文件的下载名称为学生管理.xlsx。
           return new FileStreamResult(memory, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "学生管理.xlsx" };
      }

三、下载模板

和导出基本一致,就是将List集和中的数据清空然后导出模板,使用Clear()方法,具体实现:

           var list=db.UserModel.ToList();
           
           //清空数据
           list.Clear();

           var memory = new MemoryStream();

           memory.SaveAs(list);

           memory.Seek(0, SeekOrigin.Begin);

           return new FileStreamResult(memory, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "学生管理.xlsx" };