今天学习了miniExcel,并通过它实现了一个简单的上传和导出的功能
导入比较简单:
public IActionResult ImportExcel()
{
var file = HttpContext.Request.Form.Files[0]; //获取上传的文件信息
var stream = new MemoryStream(); //新建内存流
file.CopyTo(stream); //将文件写入内存流
var list = stream.Query<User>();//将内存流中的文件数据转化为IEnumable<User>类型
var res = _userServices.BatchAdd(list); //然后调用批量添加方法将数据添加到数据库中
return Ok(res);
}
这样就实现了通过miniExcel,将上传的excel文件的数据存到数据库对应的table中
然后导入的时候,一开始一直犯错,后续发现是导入的Excel里有空行的问题。
目前还没有解决这个BUG,只能先把空行删除这样就能正常导入了。
导出数据库里的数据到Excel中,具体代码如下:
public IActionResult ExportExcel()
{
//1.查找到导出的数据(需要有数据源)
var list = _userServices.GetUserAll();
//2.将数据源存放到内存里
//MemoryStream在内存中开辟一块空间
var memoryStream = new MemoryStream();
//将list数据原】源存放到内存里
memoryStream.SaveAs(list);
//offset偏移量,0开始
memoryStream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = "user.xlsx"
};
}