正文
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 }
这个该怎么设置下?谢谢
mvcexcel
豆角米饭 | 初学一级 | 园豆:143
提问于:2014-04-01 10:49
提问于:2014-04-01 10:49
< >
收藏
最佳答案
1
改成下面这样的:
Response.Charset = "GB2312";//定义输出字符集
Response.ContentEncoding = Encoding.Default;//输出内容的编码为默认编码
收获园豆:8
水晶途途 | 小虾三级 |园豆:1432 | 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
刚试了下,也不行,中文的地方还是显示"
?????? |
"
豆角米饭 | 园豆:143 (初学一级) | 2014-04-01 11:34
@大斌小呼:
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.Default;
我这样就可以了。
酱油能 | 园豆:386 (菜鸟二级) | 2014-04-01 13:55
0
Response.ContentEncoding = Encoding.UTF8;这个也得改
吴瑞祥 | 园豆:13359 (专家六级) | 2014-04-01 12:25
刚修改了下 ,这样修改也不行,还是乱码
豆角米饭 | 园豆:143 (初学一级) | 2014-04-01 13:22
0
建议用一些excel读写的组件去做。
天天教程网 | 园豆:202 (菜鸟二级) | 2014-04-01 13:43
0
GB2312
魔多 | 园豆:927 (小虾三级) | 2014-04-01 13:50
0
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.Default;
这个真能解决编码转换问题
收获园豆:1
玩世不恭的雷寅 | 园豆:34 (初学一级) | 2014-04-01 14:16
0
我以前做过这方面的东西,这个是一个WinForm的代码,楼主看看会不会有帮助吧。
http://www.cnblogs.com/Price/p/3528006.html
收获园豆:1
Goona | 园豆:826 (小虾三级) | 2014-04-01 17:31
0
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
不太明白为什么加上那句话,就可以解决乱码的问题呢。
dongmusic | 园豆:228 (菜鸟二级) | 2015-10-31 20:22
的确加上这句就解决了乱码
Response.Write("<meta http-equiv=\"content-type\" content=\"application/vnd.ms-excel; charset=utf-8\"/>" + sb.ToString());
操蛋