C# .Net6 API Excel导入导出

发布时间 2023-08-23 19:30:40作者: 三月ღ

一、下载最新MiniExcel包
image

二、导入

  [HttpPost]
    [Route("Import")]
    public IActionResult ImportExcel()
    {
        try
        {
            var formFile = HttpContext.Request.Form.Files[0];  //文件流
            using MemoryStream stream = new MemoryStream();   //内存流--在内存当中开辟一块空间
            formFile.CopyTo(stream);  //将文件流 导入到内存当中
            var list = stream.Query<RoleInfo>();
            _roleInfoRespority.AddEntiryRange(list);
            _roleInfoRespority.SaveChnages();
            return Ok(new ApiResult {  Code=200, Msg="导入成功"});
        }
        catch (Exception)
        {
            throw;
        }
    }

前端用文件上传的组件调用接口即可(Element-ui)

可以创建要导入数据表的Excel表格模板

创建文件夹放Excel表格模板
image

//静态文件中间件
app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
           Path.Combine(builder.Environment.ContentRootPath, "Files")),
    RequestPath = "/StaticFiles"
});
//前端vue
模板下载:<a href="http://localhost:5038/StaticFiles/Temp.xlsx">点击下载Excel</a>

三、导出

[HttpGet]
[Route("Export")]
public IActionResult ExportExcel()
{
    var list =  _roleInfoRespority.GetAll().ToList();  //获取所有数据
    var memoryStream = new MemoryStream(); //在内存中当开辟空间
    memoryStream.SaveAs(list); //将数据写到内存当中
    memoryStream.Seek(0, SeekOrigin.Begin); //从0的位置开始写入
    //返回文件流  //格式是Excel格式
    return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    {
        FileDownloadName = "角色信息.xlsx"
    };
}

前端创建方法调用接口: location.href = "API接口";