public async Task <ActionResult> Export(int SkillID = 0) { MemoryStream bufferStream = null; var db = new UMC_SKILLEntities(); await Task.Run(async() => { var list = db.Certifications.Include("Member").Include("Skill").Where(m => m.SkillID == SkillID).ToList(); var stream = await ExportUtils.CreateExcelFile(null, list); // Tạo buffer memory strean để hứng file excel bufferStream = stream as MemoryStream; Console.WriteLine("task..."); }); Skill skill = db.Skills.Where(m => m.ID == SkillID).FirstOrDefault(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // Dòng này rất quan trọng, vì chạy trên firefox hay IE thì dòng này sẽ hiện Save As dialog cho người dùng chọn thư mục để lưu // File name của Excel này là ExcelDemo Response.AddHeader("Content-Disposition", "attachment; filename=" + skill.Name + "-" + DateTime.Now.ToDateString() + ".xlsx"); // Lưu file excel của chúng ta như 1 mảng byte để trả về response Response.BinaryWrite(bufferStream.ToArray()); Console.WriteLine("done!"); // Send tất cả ouput bytes về phía clients Response.Flush(); Response.End(); return(RedirectToAction("Index", "Home")); }