首页 新闻 搜索 专区 学院

导出到Excel,中文显示乱码

2
悬赏园豆:10 [已解决问题] 解决于 2014-04-02 13:38

mvc项目,导出到Excel,中文显示乱码

 1     public class HomeController : Controller
 2     {        
 3         static List<User> GetUsers()
 4         {
 5             List<User> list = new List<User>() { 
 6             new User{Id=1,Name="张三"},
 7             new User{Id=2,Name="lisi"},
 8             new User{Id=3,Name="wangwu"}
 9             };
10             return list;
11         }
12         public void SaveToExcel()
13         {
14             StringBuilder sb = new StringBuilder();
15             sb.Append("id").Append("\t");
16             sb.Append("name").Append("\n");
17             List<User> list = GetUsers();
18             foreach (var item in list)
19             {
20                 sb.Append(item.Id).Append("\t");
21                 sb.Append(item.Name).Append("\n");
22             }
23             Response.Clear();
24             Response.Buffer = true;
25             Response.Charset = "UTF-8";
26             Response.ContentEncoding = Encoding.UTF8;
27             Response.ContentType = "application/ms-excel";
28             Response.AppendHeader("Content-Disposition", "attachment; filename=card.xls");
29             Response.Write(sb.ToString());
30             Response.End();
31         }

这个该怎么设置下?谢谢

豆角米饭的主页 豆角米饭 | 初学一级 | 园豆:143
提问于:2014-04-01 10:49
< >
分享
最佳答案
1

改成下面这样的:            

Response.Charset = "GB2312";//定义输出字符集
Response.ContentEncoding = Encoding.Default;//输出内容的编码为默认编码

收获园豆:8
水晶途途 | 小虾三级 |园豆:1434 | 2014-04-01 13:56

我试了下,中文的还是乱码

豆角米饭 | 园豆:143 (初学一级) | 2014-04-01 14:43

@大斌小呼: 那你检查一下你的Windows环境和Office,是不是英文版。我的是Win7英文版,但是在区域与语言设置里全部改成China/Chinese了。另外检查一下你的Excel,有个地方设置的,我的是Excel 2007

酱油能 | 园豆:386 (菜鸟二级) | 2014-04-01 15:15
其他回答(7)
0

Response.Charset = "GB2312";试试。

酱油能 | 园豆:386 (菜鸟二级) | 2014-04-01 10:50

刚试了下,也不行,中文的地方还是显示"

??????

"

支持(0) 反对(0) 豆角米饭 | 园豆:143 (初学一级) | 2014-04-01 11:34

@大斌小呼: 

        Response.Charset = "GB2312";
        Response.ContentEncoding = Encoding.Default;

我这样就可以了。

支持(0) 反对(0) 酱油能 | 园豆:386 (菜鸟二级) | 2014-04-01 13:55
0

Response.ContentEncoding = Encoding.UTF8;这个也得改

吴瑞祥 | 园豆:28841 (高人七级) | 2014-04-01 12:25

刚修改了下 ,这样修改也不行,还是乱码

支持(0) 反对(0) 豆角米饭 | 园豆:143 (初学一级) | 2014-04-01 13:22
0

建议用一些excel读写的组件去做。

天天教程网 | 园豆:202 (菜鸟二级) | 2014-04-01 13:43
0

GB2312

魔多 | 园豆:1031 (小虾三级) | 2014-04-01 13:50
0

Response.Charset = "GB2312";
        Response.ContentEncoding = Encoding.Default;

这个真能解决编码转换问题

收获园豆:1
玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-04-01 14:16
0

我以前做过这方面的东西,这个是一个WinForm的代码,楼主看看会不会有帮助吧。

http://www.cnblogs.com/Price/p/3528006.html

收获园豆:1
seaconch | 园豆:4823 (老鸟四级) | 2014-04-01 17:31
2

public void SaveToExcel()
13         {
14             StringBuilder sb = new StringBuilder();
15             sb.Append("id").Append("\t");
16             sb.Append("name").Append("\n");
17             List<User> list = GetUsers();
18             foreach (var item in list)
19             {
20                 sb.Append(item.Id).Append("\t");
21                 sb.Append(item.Name).Append("\n");
22             }
23             Response.Clear();
24             Response.Buffer = true;
25             Response.Charset = "UTF-8";
26             Response.ContentEncoding = Encoding.UTF8;
27             Response.ContentType = "application/ms-excel";
28             Response.AppendHeader("Content-Disposition", "attachment; filename=card.xls");

29      //加上这句             
30             Response.Write("<meta http-equiv=\"content-type\" content=\"application/vnd.ms-excel; charset=utf-8\"/>" + sb.ToString()); 
31             Response.End();
32         }

 

给个赏呗!!

博客园丶忆 | 园豆:202 (菜鸟二级) | 2015-04-23 16:39

不太明白为什么加上那句话,就可以解决乱码的问题呢。

支持(0) 反对(0) dongmusic | 园豆:247 (菜鸟二级) | 2015-10-31 20:22

的确加上这句就解决了乱码

Response.Write("<meta http-equiv=\"content-type\" content=\"application/vnd.ms-excel; charset=utf-8\"/>" + sb.ToString()); 

操蛋

支持(1) 反对(0) 请叫我七哥 | 园豆:200 (初学一级) | 2016-01-14 15:46

@请叫我七哥: 感谢,前面编码都写了没有用,还是这个靠谱。

支持(0) 反对(0) 追夢 | 园豆:142 (初学一级) | 2018-02-01 14:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册