asp.net导出Excel乱码的原因及解决方法

时间:2021-11-17 10:05:28

代码如下:


protected void Excel_Click(object sender, EventArgs e) 

Response.Charset = "UTF-8"; 
Response.ClearContent(); 
Response.Clear(); 
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.HeaderEncoding = System.Text.Encoding.UTF8; 
Response.AddHeader("content-disposition", "attachment; filename=MyExpress.xls"); 
Response.ContentType = "application/excel"; 
System.IO.StringWriter sw = new System.IO.StringWriter(); 
HtmlTextWriter htw = new HtmlTextWriter(sw); 
// turn off paging 
GridView1.AllowPaging = false; 
dataBind(); 
GridView1.RenderControl(htw); 
Response.Write(sw.ToString()); 
Response.End(); 
// turn the paging on again 
GridView1.AllowPaging = true; 
dataBind(); 


关键: 

复制代码代码如下:


Response.Charset = "UTF-8";//添加编码格式 
Response.ClearContent(); 
Response.Clear(); 
Response.ContentEncoding = System.Text.Encoding.UTF8;//表格内容添加编码格式 
Response.HeaderEncoding = System.Text.Encoding.UTF8;//表头添加编码格式 


上边如果解决不了还可以用 

复制代码代码如下:


Response.ClearContent(); 
Response.Clear(); 
Response.AddHeader("content-disposition", "attachment; filename=sumlate.xls"); 
Response.Charset = "GB2312"; 
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 
Response.ContentType = "application/excel"; 
System.IO.StringWriter sw = new System.IO.StringWriter(); 
HtmlTextWriter htw = new HtmlTextWriter(sw); 
if (GridView2.Rows.Count > 0) 

GridView2.RenderControl(htw); 

else 

GridView1.RenderControl(htw); 

Response.Write(sw.ToString()); 
Response.End(); 


关键: 

复制代码代码如下:


Response.Charset = "GB2312"; 
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 


注意观察,主要原因其实就是编码格式问题。 

现在就能防止导出时候乱码问题了