2014-04-01 3 views
0
public class HomeController : Controller 
{   
    static List<User> GetUsers() 
    { 
     List<User> list = new List<User>() { 
     new User{Id=1,Name="张三"}, 
     new User{Id=2,Name="lisi"}, 
     new User{Id=3,Name="wangwu"} 
     }; 
     return list; 
    } 
    public void SaveToExcel() 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("id").Append("\t"); 
     sb.Append("name").Append("\n"); 
     List<User> list = GetUsers(); 
     foreach (var item in list) 
     { 
      sb.Append(item.Id).Append("\t"); 
      sb.Append(item.Name).Append("\n"); 
     } 
     Response.Clear(); 
     Response.Buffer = true; 
     Response.Charset = "UTF-8"; 
     Response.ContentEncoding = Encoding.UTF8; 
     Response.ContentType = "application/ms-excel"; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=card.xls"); 
     Response.Write(sb.ToString()); 
     Response.End(); 
    } 

중국어 문자가 "????"로 표시됩니다. 뛰어나다.ASP.NET에서 내 보낸 경우 중국어 문자를 읽을 수 없게됩니다.

Excel을 작성하는 Microsoft.Office.Interop.Excel 또는 Open XML 같은 타사 라이브러리를 사용한다
+0

sb.ToString()을 호출 할 때 문제가 아닌지 확인 했습니까? .NET 문자열이 유니 코드 (UTF-16) 인코딩 형식이므로 이해가되지 않을 수도 있습니다. – DeanOC

+0

읽기 [this] (http://msdn.microsoft.com/en-us/library/zs0350fy (v = versus90) .aspx) – Shell

답변

0

당신은 Response.ContentEncoding = Encoding.Default 사용할 수 있습니다; 기본 charset은 UTF-8이어야합니다.

+0

마음을 정교하게? – manetsus

관련 문제