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

你可能感兴趣的:(Datatable)