服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - ASP.NET教程 - asp.net导出Excel乱码的原因及解决方法

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

2019-11-29 14:11ASP.NET教程网 ASP.NET教程

asp.net导出Excel乱码的情况时有发生,本文有个不错的解决方法,大家可以参考下

代码如下:


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"); 


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

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

延伸 · 阅读

精彩推荐