ASP.NET使用GridView导出Excel实现方法

本文实例讲述了ASP.NET使用GridView导出Excel实现方法。分享给大家供大家参考。具体实现方法如下:

/// <summary>  

/// 将DataTable数据导出到EXCEL,调用该方法后自动返回可下载的文件流  

/// </summary>  

/// <param name="dtData">要导出的数据源</param>  

public static void DataTable1Excel(System.Data.DataTable dtData)  

{  

        System.Web.UI.WebControls.GridView gvExport = null;  

        // 当前对话  

        System.Web.HttpContext curContext = System.Web.HttpContext.Current;  

        // IO用于导出并返回excel文件  

        System.IO.StringWriter strWriter = null;  

        System.Web.UI.HtmlTextWriter htmlWriter = null;  

  

        if (dtData != null)  

        {  

            // 设置编码和附件格式  

            curContext.Response.ContentType = "application/vnd.ms-excel";  

            curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");  

            curContext.Response.Charset = "utf-8";  

  

            // 导出excel文件  

            strWriter = new System.IO.StringWriter();  

            htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);  

            // 为了解决gvData中可能进行了分页的情况,需要重新定义一个无分页的GridView  

            gvExport = new System.Web.UI.WebControls.GridView();  

            gvExport.DataSource = dtData.DefaultView;  

            gvExport.AllowPaging = false;  

            gvExport.DataBind();  

  

            // 返回客户端  

            gvExport.RenderControl(htmlWriter);  

            curContext.Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />" + strWriter.ToString());  

            curContext.Response.End();  

        }  

}  

  

/// <summary>  

/// 直接输出Excel  

/// </summary>  

/// <param name="dtData"></param>  

public static void DataTable2Excel(System.Data.DataTable dtData)  

{  

          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 (dtData != null)  

      {  

        // 设置编码和附件格式  

        curContext.Response.ContentType = "application/vnd.ms-excel";  

        curContext.Response.ContentEncoding =System.Text.Encoding.UTF8;  

        curContext.Response.Charset = "";  

                  

        // 导出excel文件  

        strWriter = new System.IO.StringWriter();  

        htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);  

  

        // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid  

        dgExport = new System.Web.UI.WebControls.DataGrid();           

        dgExport.DataSource = dtData.DefaultView;  

        dgExport.AllowPaging = false;  

        dgExport.DataBind();  

  

        // 返回客户端  

        dgExport.RenderControl(htmlWriter);    

        curContext.Response.Write(strWriter.ToString());  

        curContext.Response.End();  

      }  

}

希望本文所述对大家的asp.net程序设计有所帮助。