.Net Core使用miniExcel实现导入导出
.Net Core使用miniExcel实现导入导出
首先,引入NuGet包:MiniExcel第三方插件
一、导入
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" };