2011-11-14 11 views
4

私のasp.netアプリケーションは、Excelで開くCSVファイルとしてデータセットをエクスポートすることになっています。データセットには、英字に加えて、日本語の2倍の漢字が含まれています。Excelで開くためにCSVで日本語を正しくエンコードするためにはどのような文字セットが必要ですか?

ヘッダー、文字セット、およびコンテンツエンコーディングのさまざまな組み合わせを試しましたが、Excelでファイルを開き、日本語の文字を正しく表示するための適切な組み合わせが見つかりませんでした。

メモ帳でファイルを開いてUTF-8エンコーディングで保存すると、ファイルをExcelで開き、意図したとおりに日本語の文字を表示できます。したがって、それは可能でなければなりませんが、エクスポートされたファイルを開いてメモ帳に保存することなく、適切なヘッダーの組み合わせを見つけることができません。

Private Sub TestCSV() 

    Dim context As HttpContext = HttpContext.Current 

    context.Response.Clear() 
    context.Response.ClearHeaders() 
    context.Response.ClearContent() 
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache) 
    context.Response.AddHeader("Content-Disposition", "attachment; filename=test.csv") 
    context.Response.ContentType = "text/csv"   
    context.Response.Charset = Encoding.UTF8.WebName 

    context.Response.Write("English,Japanese") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Test,日本語") 

    context.Response.End() 

End Sub 

このコードを動作させる助けがあれば、大歓迎です。

また、次のコード行をさまざまな組み合わせと注文で使用してみましたが、何も効果がありませんでした。

context.Response.BinaryWrite(Encoding.UTF8.GetPreamble()) 
    context.Response.BinaryWrite(Encoding.GetEncoding("utf-16le").GetPreamble()) 
    context.Response.Charset = Encoding.GetEncoding("utf-16le").WebName 
    context.Response.AddHeader("Content-Type", "text/csv; charset=utf-16") 
    context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250") 

ありがとう!

答えて

0

ありがとうございました!私はいくつかの言語やシンボルを追加して、二重に確実にしています。

キーは、ヘッダ内の文字セットを設定することでした。内容はすべてのUTF-8プリアンブルです。

Private Sub TestCSV() 

    Dim context As HttpContext = HttpContext.Current 

    context.Response.Clear() 
    context.Response.ClearHeaders() 
    context.Response.ClearContent() 
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache) 
    context.Response.ContentType = "text/csv" 
    context.Response.AddHeader("Content-Disposition", "attachment; filename=test.csv") 
    context.Response.Charset = Encoding.UTF8.WebName 
    context.Response.ContentEncoding = Encoding.UTF8 
    context.Response.BinaryWrite(Encoding.UTF8.GetPreamble) 

    context.Response.Write("Language,Sample") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Symbol,™£©€®") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Japanese,日本語") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Chinese Simplified,中文(简体)") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Spanish,Español") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Chinese Traditional,中文(繁體)") 
    context.Response.Write(Environment.NewLine) 
    context.Response.Write("Korean,한국어") 

    context.Response.End() 

End Sub 

ありがとうございます!

0
/// <summary> 
/// method to export report into excel 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
protected void linkProcess_Click(object sender, EventArgs e) 
{ 
    Response.ClearContent(); 
    Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", "YTDReviewsData")); 
    Response.ContentType = "application/ms-excel"; 
    Response.ContentEncoding = System.Text.Encoding.Unicode; 
    Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());  
    System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
    gvDealDetails.RenderControl(htmlWrite); 
    Response.Write(stringWrite.ToString()); 
    Response.End(); 
} 
関連する問題