GridView导出Excel

送分小仙女□ 提交于 2020-01-13 12:48:29

前台:

<div>
       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
           <Columns>
               <asp:BoundField DataField="name" HeaderText="姓名" />
               <asp:BoundField DataField="sex" HeaderText="性别" />
               <asp:BoundField DataField="age" HeaderText="年龄" />
               <asp:BoundField DataField="id" HeaderText="学号" />
           </Columns>
       </asp:GridView>
<asp:Button ID="Button1" runat="server" Text="导出Excel" OnClick="Button1_Click" />
</div>

后台:

//绑定gridview数据

protected void Page_Load(object sender, EventArgs e)
{
    string connStr = ConfigurationManager.ConnectionStrings["lianxiConnectionString"].ConnectionString;
    using (SqlConnection conn=new SqlConnection(connStr))
  {
    conn.Open();
        using (SqlCommand cmd=conn.CreateCommand())
      {
           string sql = "select * from students";
           cmd.CommandText = sql;
           SqlDataAdapter adapter = new SqlDataAdapter(cmd);
           DataSet ds = new DataSet();
           adapter.Fill(ds);
           GridView1.DataSource = ds;
           GridView1.DataBind();
        }
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    Export("application/ms-excel","学生信息表.xls");
}
//自定义方法,注意编码方式,否则容易乱码
private void Export(string FileType,string FileName)
{
    Response.Charset = "GB2312";
    Response.ContentEncoding = Encoding.GetEncoding("GB2312");
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
    Response.ContentType = FileType;
    this.EnableViewState = false;
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.RenderControl(hw);
    Response.Write(sw.ToString());
    Response.End();
}

//如果会发或使用客户端脚本的服务器控件没有包含在<form runat="server">中,他们将无法运行,此重载方法可解决问题
public override void VerifyRenderingInServerForm(Control control)
{
//无需填写任何代码
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!