C#Response.Write CSV文件不拆分单元格

时间:2013-05-02 11:37:55

标签: c# asp.net encoding character-encoding response.write

我有这段代码:

    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));
    }

下载的文件看起来很好,但所有行单元格合并到一个单元格的事实除外。 我必须使用Response as BinaryWrite,因为csv / xls内容中有希伯来语和日语字符。 如何用二进制写入分割单元格csv / xls文件?

2 个答案:

答案 0 :(得分:0)

quote Wikipedia

  

Microsoft Excel将打开.csv文件,但视系统而定   区域设置,可能需要分号作为分隔符而不是   逗号,因为在某些语言中逗号用作小数   分隔器。

因此虽然它被称为逗号分隔值,但我认为你应该尝试使用分号而不是逗号。

即。使用方法:

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

答案 1 :(得分:0)

最好的方法是在有逗号时用双引号括起字符串来清理你的字符串,excel在保存你的csv文件时这样做。