public ActionResult Download(string working) { // return View(); ViewBag.Message = "Welcome to Report Generation!"; Temp cm = new Temp(); Listmodel = cm.getAll(); GridView gv = new GridView(); gv.DataSource = model; gv.DataBind(); Session["temp"] = gv; if (Session["temp"] != null) { return new DownloadFileActionResult((GridView)Session["temp"], "temp.xls"); } else { //Some kind of a result that will indicate that the view has //not been created yet. I would use a Javascript message to do so. return View(model); } //return View(model); } public class Temp { public int id { get; set; } public string Name { get; set; } public Temp() { } Temp(int _id,string _name) { id = _id; Name = _name; } public List getAll() { List list = new List (); list.Add(new Temp(1, "Murli")); list.Add(new Temp(3, "Deepak")); list.Add(new Temp(5, "Prakash")); list.Add(new Temp(7, "Mahandar")); return list; } } public class DownloadFileActionResult : ActionResult { public GridView ExcelGridView { get; set; } public string fileName { get; set; } public DownloadFileActionResult(GridView gv, string pFileName) { ExcelGridView = gv; fileName = pFileName; } public override void ExecuteResult(ControllerContext context) { //Create a response stream to create and write the Excel file HttpContext curContext = HttpContext.Current; curContext.Response.Clear(); curContext.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); curContext.Response.Charset = ""; curContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); curContext.Response.ContentType = "application/vnd.ms-excel"; //Convert the rendering of the gridview to a string representation StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); ExcelGridView.RenderControl(htw); //Open a memory stream that you can use to write back to the response byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString()); MemoryStream s = new MemoryStream(byteArray); StreamReader sr = new StreamReader(s, Encoding.ASCII); //Write the stream back to the response curContext.Response.Write(sr.ReadToEnd()); curContext.Response.End(); } }
Wednesday, July 8, 2015
Download excel report in MVC
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment