• 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("	");
    16             sb.Append("name").Append("
    ");
    17             List<User> list = GetUsers();
    18             foreach (var item in list)
    19             {
    20                 sb.Append(item.Id).Append("	");
    21                 sb.Append(item.Name).Append("
    ");
    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
    水晶途途 小虾三级 |园豆: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(" ");
    16             sb.Append("name").Append(" ");
    17             List<User> list = GetUsers();
    18             foreach (var item in list)
    19             {
    20                 sb.Append(item.Id).Append(" ");
    21                 sb.Append(item.Name).Append(" ");
    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()); 

    操蛋

  • 相关阅读:
    JAVA复习笔记之GC部分
    elasticsearch学习笔记--原理介绍
    JavaScript--Array数组jion方法使用
    MyBatis探究-----缓存机制详解
    C#---- Winform控件PictureBox详解
    Mybatis探究-----一对一、一对多关联查询
    C#-----CancellationTokenSource取消线程
    MyBatis探究-----接口类映射XML文件中符号$和#的区别
    C#-----定时器的几种实现
    eclipse如何在不联网的情况下引入dtd约束文件
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/5579230.html
Copyright © 2020-2023  润新知