2013-05-02 59 views
0

我有這樣的代碼:C#的Response.Write CSV文件不分裂細胞

context.Response.ClearHeaders(); 
    context.Response.AddHeader("content-disposition", "attachment; filename=Clients.csv"); 
    context.Response.ClearContent(); 
    context.Response.ContentType = "application/ms-excel"; 
    context.Response.ContentEncoding = System.Text.Encoding.Unicode; 
    context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); 
    context.Response.BufferOutput = false; 
    context.Response.Buffer = false; 

    foreach (var c in clients) 
    { 
     context.Response.Output.WriteLine(string.Format("{0},{1}", c.FirstName, c.LastName)); 
    } 

下載的文件看起來不錯,但事實上,所有行單元格合併爲一個單元格。 由於希望和csv/xls內容中的日文字符,我必須使用Response作爲BinaryWrite。 如何使用二進制寫入來寫入拆分單元格csv/xls文件?

回答

0

quote Wikipedia

,Microsoft Excel將打開.csv文件,但根據系統的 區域設置,可以期待一個分號作爲分隔符的代替 逗號,因爲在某些語言逗號用作小數點 分隔符。

所以,雖然它被稱爲逗號分隔值,我認爲你應該嘗試使用分號而不是逗號。

I.e.使用方法:

context.Response.Output.WriteLine(
    string.Format("{0};{1}", c.FirstName, c.LastName)); 
0

最好的辦法是用雙引號包裹字符串時有任何逗號,Excel沒有它,同時節省您的CSV文件的方式來淨化你的字符串。