0

我有这个代码:

    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 内容中的希伯来语和日语字符,我必须将响应用作 BinaryWrite。如何使用二进制写入写入拆分单元格 csv/xls 文件?

4

2 回答 2

0

引用维基百科:

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

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

即使用:

context.Response.Output.WriteLine(
    string.Format("{0};{1}", c.FirstName, c.LastName));
于 2013-05-02T11:45:20.867 回答
0

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

于 2014-06-06T22:52:19.497 回答