2013-05-02 60 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文件的方式来净化你的字符串。