经测试,有可能是这个问题:
导出Excel的代码:
private
void
ExportToExcel()
{
Response.Clear();
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
Response.AddHeader( " content-disposition " , " attachment;filename=Test.xls " );
// Response.Charset = "UTF-8"; // 设置字符集
// curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; // 设置编码集
Response.Charset = " utf-8 " ;
Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
// Response.ContentType = "application/vnd.xls";
Response.ContentType = " application/ms-excel " ;
// ms-excel
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
// 写到Excel的数据不用分页
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString()); // 向客户端写数据
Response.End();
GridView1.AllowSorting = true ;
// 恢复分页
}
{
Response.Clear();
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
Response.AddHeader( " content-disposition " , " attachment;filename=Test.xls " );
// Response.Charset = "UTF-8"; // 设置字符集
// curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; // 设置编码集
Response.Charset = " utf-8 " ;
Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
// Response.ContentType = "application/vnd.xls";
Response.ContentType = " application/ms-excel " ;
// ms-excel
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
// 写到Excel的数据不用分页
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString()); // 向客户端写数据
Response.End();
GridView1.AllowSorting = true ;
// 恢复分页
}
如果将 Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
设置成 UTF7则会出现题目中的问题 导致打开是乱码,改成GB2312就正常。