public static void DataGridToExcel(DataGrid dataGrid, string fileName)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
// 1. Set ContentEncoding
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
// 2. Set harset
HttpContext.Current.Response.Charset = "utf-8";
HttpContext.Current.Response.AppendHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
var sw = new StringWriter();
var htmlw = new HtmlTextWriter(sw);
dataGrid.RenderControl(htmlw);
// 3. Set meta data
HttpContext.Current.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=utf-8\"/>");
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}