2014-04-15 6 views
1
I 뒤에 C# 코드에서 엑셀 아랍어 작업을 내보내 문제가있어

: 내가 사용 코드 :아랍어 단어

 HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     string attachment = "attachment; filename=Employee.xls"; 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.Buffer = true; 
     HttpContext.Current.Response.Charset = "UTF-8"; 
     HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; 
     HttpContext.Current.Response.AddHeader("content-disposition", attachment); 

     HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; 
     Response.Write("السبت");// this word mean Saturday in arabic 
     Response.End(); 
     Application.UnLock(); 

하지만 이후 내가 엑셀이 파일 열을 모양은 다음과 같습니다. enter image description here

왜 단어가 어떻게 보이며이를 고칠 수 있습니까? 두 번째 행에 단어의 크기가 셀의 크기와 맞지 않는 경우 어떻게해야합니까? 다른 질문 : C# 코드 뒤에서 셀 배경을 색칠하는 방법과 셀을 결합하는 방법? 들으 어떤 방법

+0

당신의 문자가 여기에서 설정 cange'HttpContext.Current.Response.Charset = "UTF-8"에 전달 .ContentEncoding = System.Text.Encoding.GetEncoding ("windows-1254"); 'HTTPContext.CUrrent.Response.Charset = "windows-1254"; ' – MethodMan

+0

그 단어는 물음표처럼 보입니다. ?????? –

+0

한 번에 한 가지 질문하십시오 : 인코딩, 셀 크기, 배경색. –

답변

0

난 그냥 지금 예를 들어 내 말에 재 작성했다 그것을 테스트하고 모든 것을 당신이 Culture 문제가 발생하는 경우 궁금 는

염두에 내 말에 할당하고 파일 이름을 유지 잘 작동 `이 줄을 추가 다음을 읽고 을 어떻게 볼 수 toHTTPContext.CUrrent.Response;과 방법

public static void ExportToExcel(DataTable table, string fileName) 
{ 
    HttpContext context = HttpContext.Current; 
    context.Response.Clear(); 
    context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254"); 
    context.Response.Charset = "windows-1254"; //ISO-8859-13 ISO-8859-9 windows-1254 
    //Begin Table 
    context.Response.Write("<table><tr>"); 

    //Write Header 
    foreach (DataColumn column in table.Columns) 
    { 
     context.Response.Write("<th>" + column.ColumnName + "</th>"); 
    } 
    context.Response.Write("</tr>"); 

    //Write Data 
    foreach (DataRow row in table.Rows) 
    { 
     context.Response.Write("<tr>"); 
     for (int i = 0; i < table.Columns.Count; i++) 
     { 
      context.Response.Write("<td>" + row[i].ToString().Replace(",", string.Empty) + "</td>"); 
     } 
     context.Response.Write("</tr>"); 
    } 

    //End Table 
    context.Response.Write("</table>"); 
    context.Response.ContentType = "application/vnd.ms-excel"; 
    context.Response.AppendHeader("content-disposition", string.Format("attachment;filename={0}.xls", fileName)); 
    context.Response.Flush(); 
    context.Response.End(); 
} 
+0

여전히 물음표처럼 보입니다. ????? –

+0

여기에서 Excel을 채우고있는 데이터가 어디입니까? DataTable에 전달하는 WebPage에서 Excel로 채우는 정확한 방법입니다. – MethodMan

+0

시스템 환경 설정을 확인해야하는 매력처럼 작동합니다. – MethodMan