前台:
<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)
{
//无需填写任何代码
}
来源:https://www.cnblogs.com/XiaoHunZhen/p/3684041.html