public static void ToExcel(Control ctl)
{
string filename = System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.BufferOutput = false;
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
HtmlForm form = new HtmlForm();
form.Controls.Add(ctl);
Page page = new Page();
page.Controls.Add(form);
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
page.RenderControl(hw);
string value = tw.ToString();
Regex reg = new Regex(@"<div>([\s\S]*?)</div>", RegexOptions.IgnoreCase);
value = reg.Replace(value, "", 1, 0);//清除第一個div(viewstate)
HttpContext.Current.Response.Write(
string.Format(
"<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">{0}</head>"+
"<body>{1}</body></html>",
"<style> body{border:0.5pt solid #ccc;font-family:Verdana, Arial, Helvetica, 新細明體;} " +
" td { mso-number-format:\\@; } br {mso-data-placement:same-cell;} "+
" .trTitle th{background: #3366CC;color:white;font-weight:normal; }table tr td,th{ font-size: 10pt; }"+
"</style> ", value));
HttpContext.Current.Response.End();
}