2013-11-04 3 views
0

엔티티 프레임 워크를 사용하고 있습니다. 나는이 방법으로 Excel로 테이블을 내보낼 :MVC3을 엑셀로 내보내기 - 람다 식으로 인코딩 변경

DetailsSet TheDetails = db.DetailsSet.SingleOrDefault(x => x.Id == id); 
      string filename = Guid.NewGuid() + ".xls"; 
      StringWriter tw = new System.IO.StringWriter(); 
      HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); 
      DataGrid dgGrid = new DataGrid(); 
      // var List = db.GetRegList(TheDetails.CorrectAnswer); 
      List<RegistrationSet> RegList = TheDetails.RegistrationSet.Where(x => x.Answer == TheDetails.CorrectAnswer).ToList(); 
      dgGrid.DataSource = RegList; 
      dgGrid.DataBind(); 
      dgGrid.RenderControl(hw); 
      Response.ContentType = "application/vnd.ms-excel"; 
      Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ""); 

      Response.Write(tw.ToString()); 
      Response.End(); 

문제는 Excel에서 DB에서 히브리어의 모든 텍스트가 gibresh처럼 표시된다는 점이다. 격자에서 .Where(x => x.Answer == TheDetails.CorrectAnswer)을 제거하면 Excel이 정상입니다 - 히브리어의 모든 텍스트가 정상임을 의미합니다. 이처럼

은 OK입니다 : OK 기능의

List<RegistrationSet> RegList = TheDetails.RegistrationSet.Where(x => x.Answer == TheDetails.CorrectAnswer).ToList(); 

전체 예 :

List<RegistrationSet> RegList = TheDetails.RegistrationSet.ToList(); 

그러나이 같은이 아니라 OK입니다

DetailsSet TheDetails = db.DetailsSet.SingleOrDefault(x => x.Id == id); 
      string filename = Guid.NewGuid() + ".xls"; 
      StringWriter tw = new System.IO.StringWriter(); 
      HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); 
      DataGrid dgGrid = new DataGrid(); 
      // var List = db.GetRegList(TheDetails.CorrectAnswer); 
      List<RegistrationSet> RegList = TheDetails.RegistrationSet.ToList(); 
      dgGrid.DataSource = RegList; 
      dgGrid.DataBind(); 
      dgGrid.RenderControl(hw); 
      Response.ContentType = "application/vnd.ms-excel"; 
      Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ""); 

      Response.Write(tw.ToString()); 
      Response.End(); 

답변

0
Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble()); 

관념 문제는