zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Asp.net中DataTable导出到Excel的方法介绍

NetExcelASP导出方法 介绍 dataTable
2023-06-13 09:14:52 时间

复制代码代码如下:


#region DataTable导出到Excel
       ///<summary>
       ///DataTable导出到Excel
       ///</summary>
       ///<paramname="pData">DataTable</param>
       ///<paramname="pFileName">导出文件名</param>
       ///<paramname="pHeader">导出标题以|分割</param>
       publicstaticvoidDataTableExcel(System.Data.DataTablepData,stringpFileName,stringpHeader)
       {
           System.Web.UI.WebControls.DataGriddgExport=null;
           //当前对话
           System.Web.HttpContextcurContext=System.Web.HttpContext.Current;
           //IO用于导出并返回excel文件
           System.IO.StringWriterstrWriter=null;
           System.Web.UI.HtmlTextWriterhtmlWriter=null;
           if(pData!=null)
           {
               stringUserAgent=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=newSystem.IO.StringWriter();
               htmlWriter=newSystem.Web.UI.HtmlTextWriter(strWriter);

               //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
               dgExport=newSystem.Web.UI.WebControls.DataGrid();
               dgExport.DataSource=pData.DefaultView;
               dgExport.AllowPaging=false;
               dgExport.ShowHeader=false;//去掉标题
               dgExport.DataBind();

               string[]arrHeader=pHeader.Split("|");
               stringstrHeader="<tableborder=\"1\"style=\"background-color:Gray;font-weight:bold;\"><tr>";
               foreach(stringjinarrHeader)
               {
                   strHeader+="<td>"+j.ToString()+"</td>";
               }
               strHeader+="</tr></table>";
               //返回客户端
               dgExport.RenderControl(htmlWriter);
               stringstrMeta="<metahttp-equiv=\"content-type\"content=\"application/ms-excel;charset=UTF-8\"/>";
               curContext.Response.Write(strMeta+strHeader+strWriter.ToString());
               curContext.Response.End();
           }
       }
       #endregion