C# MiniExcel 导入和导出表格数据
C# MiniExcel 导入和导出表格数据
1.首先从NuGet包里下载MIniExcel文件引入
然后下面是一段Api控制器导入的代码
导入导出的表格用.xlsx或.xls工作表
/// <summary> /// 上传文件到服务器端 /// </summary> /// <param name="formFile"></param> /// <returns></returns> [HttpPost] public IActionResult Test(IFormFile formFile) { try { //获取文件名 var FileName = formFile.FileName; //获取文件后缀 var fileExtension = Path.GetExtension(FileName); //新文件名 var newFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + fileExtension; //文件保存路径 var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "Upload", newFileName); //判断路径是否存在 if (!Directory.Exists(filePath)) { //创建路径 Directory.CreateDirectory(filePath); } filePath = Path.Combine(filePath, newFileName); using (var stream = System.IO.File.Create(filePath)) { formFile.CopyTo(stream); var list = MiniExcel.Query<ImportDTO>(filePath); } return Ok(newFileName); } catch (Exception) { throw; } } //下面是异步方法导入表格数据到数据库里 表格里的数据类型和字段必须和数据库一一对应 /// <summary> /// 异步方法内存流导入 /// </summary> /// <param name="formFile">文件</param> /// <returns></returns> [HttpPost] public async Task<IActionResult> ImportExcel() { try { var formFile = Request.Form.Files[0]; Api_Result<string> api_Result = new Api_Result<string>(); //获取文件名 var fileName = formFile.FileName; // 获取文件后缀 var fileExtension = Path.GetExtension(fileName); // 判断后缀是否是xlsx或者xls if (fileExtension != ".xlsx" && fileExtension != ".xls") { return BadRequest("文件格式错误"); } var length = formFile.Length; if (length > 1024 * 1024 * 10) { return BadRequest("文件大小不能超过10M"); } // MemoryStream 内存流 在内存当中创建一个流(开辟空间) using (var stream = new MemoryStream()) { //蒋文件写入内存流 formFile.CopyTo(stream); //将流的位置归零 stream.Position = 0; //将内存流转成List集合 var list = await stream.QueryAsync<ImportDTO>(); //将ImportDTO转成User //后期这个地方可以使用AutoMapper 来进行转换 //可以将DTO转成实体 - 或实体类转成DTO var users = list.Select(x => new Users { UId = YitIdHelper.NextId().ToString(), UName = x.UName, UPwd = x.UPwd, UserName = x.UserName, Age = x.Age, Email = x.Email, }).ToList(); //调用添加方法 await _iusersService.AddRangeAsync(users); } api_Result.Success(formFile.ToString()); return Ok(api_Result); } catch (Exception) { throw; } } //下面是Excel导出数据库数据到表格的方法 /// <summary> /// Excel导出 /// </summary> /// <returns></returns> [HttpPost] public async Task<IActionResult> GetExcel(List<UsersDTO> usersDTO) { try { // var list = await _usersService.GetUsersExcel(); List<object> dataTable = new List<object>(); foreach (var item in usersDTO) { dataTable.Add(new { 用户名 = item.UName, 密码 = item.UPwd, 姓名 = item.UserName, 年龄 = item.Age, 邮箱 = item.Email }); } var ms = new MemoryStream(); ms.SaveAs(dataTable); ms.Seek(0, SeekOrigin.Begin); return new FileStreamResult(ms, contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "domo.xlsx" }; } catch (Exception) { throw; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现