将gridview中的数据导入excel中,解决汉字出现乱码的问题。
1、首先编写导出函数Export
public void Export(string FileType,string FileName)
{
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>"); //添加改行,消除汉字乱码
Response.ContentType = FileType;
this.EnableViewState =false ;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
2、按钮事件调用该方法
protected void Button1_Click(object sender, EventArgs e)
{
Export("application/ms-excel","学生信息表.xls");
}
3、重写VerifyRenderingInServerForm事件,如果是将datagrid中的数据导入到excel中,就没必要重写该方法。
public override void VerifyRenderingInServerForm(Control control)
{
//内容随意,可不写
}
显示如下图:
如果要格式化输出gridview的内容,可以添加如下方法:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[3].Attributes.Add("style","vnd.ms-excel.numberformat:###岁"); //设置格式
}
}