华域联盟 .Net ASP.NET导出数据到Excel的实现方法

ASP.NET导出数据到Excel的实现方法

网上好些代码的原理大致与此类似,同样都存在一个问题,就是:

  类型“GridView”的控件“ctl00_center_GridView1”必须放在具有 runat=server 的窗体标记内。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.Web.HttpException: 类型“GridView”的控件“ctl00_center_GridView1”必须放在具有 runat=server 的窗体标记内。

  这段错误描述是我在注释了这段程序是报的错,

复制代码 代码如下:

//publicoverridevoidVerifyRenderingInServerForm(Controlcontrol)

//{

//  //base.VerifyRenderingInServerForm(control);

//}

  虽然这个方法里的内容也被注释了,也就是说这是个空方法,但是如果没有个方法,程序就会报上面那个错误。最初见到这段错误说明是想到了以前做ajax程序时报的一个错误很是类似。同样是因为没有重写VerifyRenderingInServerForm方法所致。在此提醒使用的朋友注意,下面贴出导出到Excel的代码

复制代码 代码如下:

usingSystem;

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Collections;

usingSystem.Web;

usingSystem.Web.Security;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

usingSystem.Web.UI.WebControls.WebParts;

usingSystem.Web.UI.HtmlControls;

usingSystem.IO;

///<summary>

///ToExcleHelper的摘要说明

///</summary>

  publicclassExportHelper

  {

    publicstaticvoidExportToExcel(IListdataList,string[]fields,string[]headTexts,stringtitle)

    {

      GridViewgvw=newGridView();

      intColCount,i;

      //如果筛选的字段和对应的列头名称个数相对的情况下只导出指定的字段

      if(fields.Length!=0&&fields.Length==headTexts.Length)

      {

        ColCount=fields.Length;

        gvw.AutoGenerateColumns=false;

        for(i=0;i<ColCount;i++)

        {

          BoundFieldbf=newBoundField();

          bf.DataField=fields[i];

          bf.HeaderText=headTexts[i];

          gvw.Columns.Add(bf);

        }

      }

      else

      {

        gvw.AutoGenerateColumns=true;

      }

      SetStype(gvw);

      gvw.DataSource=dataList;

      gvw.DataBind();

      ExportToExcel(gvw,title);

    }

    ///<summary>

    ///导出数据到Excel

    ///</summary>

    ///<paramname="DataList">IListData</param>

    ///<paramname="Fields">要导出的字段</param>

    ///<paramname="HeadName">字段对应显示的名称</param>

    publicstaticvoidExportToExcel(IListdataList,string[]fields,string[]headTexts)

    {

      ExportToExcel(dataList,fields,headTexts,string.Empty);

    }

    ///<summary>

    ///设置样式

    ///</summary>

    ///<paramname="gvw"></param>

    privatestaticvoidSetStype(GridViewgvw)

    {

      gvw.Font.Name="Verdana";

      gvw.BorderStyle=System.Web.UI.WebControls.BorderStyle.Solid;

      gvw.HeaderStyle.BackColor=System.Drawing.Color.LightCyan;

      gvw.HeaderStyle.ForeColor=System.Drawing.Color.Black;

      gvw.HeaderStyle.HorizontalAlign=System.Web.UI.WebControls.HorizontalAlign.Center;

      gvw.HeaderStyle.Wrap=false;

      gvw.HeaderStyle.Font.Bold=true;

      gvw.HeaderStyle.Font.Size=10;

      gvw.RowStyle.Font.Size=10;

    }

    ///<summary>

    ///导出GridView中的数据到Excel

    ///</summary>

    ///<paramname="gvw"></param>

    ///<paramname="DataList"></param>

    publicstaticvoidExportToExcel(GridViewgvw,stringtitle)

    {

      stringfileName;

      HttpContext.Current.Response.Buffer=true;

      HttpContext.Current.Response.ClearContent();

      HttpContext.Current.Response.ClearHeaders();

      fileName=string.Format("xhmd{0:yyMMddHHmm}.xls",DateTime.Now);

      HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+fileName);

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

      StringWritertw=newSystem.IO.StringWriter();

      HtmlTextWriterhw=newSystem.Web.UI.HtmlTextWriter(tw);

      gvw.RenderControl(hw);

      if(!string.IsNullOrEmpty(title))

      {

        HttpContext.Current.Response.Write("<b><center><fontsize=3face=Verdanacolor=#0000FF>"+title+"</font></center></b>");

      }

      HttpContext.Current.Response.Write(tw.ToString());

      HttpContext.Current.Response.Flush();

      HttpContext.Current.Response.Close();

      HttpContext.Current.Response.End();

      gvw.Dispose();

      tw.Dispose();

      hw.Dispose();

      gvw=null;

      tw=null;

      hw=null;

    }

    publicstaticvoidDataTable2Excel(System.Data.DataTabledtData)

    {

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

     {

        //设置编码和附件格式

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

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

       curContext.Response.Charset="";

        

        //导出excel文件

       strWriter=newSystem.IO.StringWriter();

       htmlWriter=newSystem.Web.UI.HtmlTextWriter(strWriter);

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

        dgExport=newSystem.Web.UI.WebControls.DataGrid();

        dgExport.DataSource=dtData.DefaultView;

        dgExport.AllowPaging=false;

        dgExport.DataBind();

        //返回客户端

        dgExport.RenderControl(htmlWriter);  

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

        curContext.Response.End();

      }

    }

  }
您可能感兴趣的文章:

  • 直接在线预览Word、Excel、TXT文件之ASP.NET
  • ASP.NET使用GridView导出Excel实现方法
  • asp.net导出excel数据的常见方法汇总
  • Asp.net导出Excel/Csv文本格式数据的方法
  • Asp.Net使用Npoi导入导出Excel的方法
  • asp.net导出Excel乱码的原因及解决方法
  • asp.net使用npoi读取excel模板并导出下载详解
  • .Net中导出数据到Excel(asp.net和winform程序中)
  • asp.net生成Excel并导出下载五种实现方法
  • ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法
  • asp.net中如何批量导出access某表内容到word文档
  • asp.net 按指定模板导出word,pdf实例代码
  • asp.net+Ligerui实现grid导出Excel和Word的方法

本文由 华域联盟 原创撰写:华域联盟 » ASP.NET导出数据到Excel的实现方法

转载请保留出处和原文链接:https://www.cnhackhy.com/51183.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部