Ejemplo n.º 1
0
        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"));
        }