本篇文章介绍了,Asp.net中DataTable导出到Excel的方法。需要的朋友参考下
复制代码 代码如下: #region DataTable导出到Excel /// <summary> /// DataTable导出到Excel /// </summary> /// <param name="pData">DataTable</param> /// <param name="pFileName">导出文件名</param> /// <param name="pHeader">导出标题以|分割</param> public static void DataTableExcel(System.Data.DataTable pData, string pFileName, string pHeader) { System.Web.UI.WebControls.DataGrid dgExport = null; // 当前对话 System.Web.HttpContext curContext = System.Web.HttpContext.Current; // IO用于导出并返回excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null; if (pData != null) { string UserAgent = curContext.Request.ServerVariables["http_user_agent"].ToLower(); if (UserAgent.IndexOf("firefox") == -1)//火狐浏览器 pFileName = HttpUtility.UrlEncode(pFileName, System.Text.Encoding.UTF8);
curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + pFileName + ".xls"); curContext.Response.ContentType = "application/vnd.ms-excel"; strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
// 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid dgExport = new System.Web.UI.WebControls.DataGrid(); dgExport.DataSource = pData.DefaultView; dgExport.AllowPaging = false; dgExport.ShowHeader = false;//去掉标题 dgExport.DataBind();
string[] arrHeader = pHeader.Split('|'); string strHeader = "<table border=\"1\" style=\"background-color:Gray;font-weight:bold;\"><tr>"; foreach (string j in arrHeader) { strHeader += "<td>" + j.ToString() + "</td>"; } strHeader += "</tr></table>"; // 返回客户端 dgExport.RenderControl(htmlWriter); string strMeta = "<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>"; curContext.Response.Write(strMeta + strHeader + strWriter.ToString()); curContext.Response.End(); } } #endregion
|