在 asp.net 中编写 csv 文件

Posted

技术标签:

【中文标题】在 asp.net 中编写 csv 文件【英文标题】:Writing csv file in asp.net 【发布时间】:2011-06-27 09:41:02 【问题描述】:

我正在尝试将数据导出到 csv 文件,因为数据中有中文字符我必须使用 unicode.. 但是在添加 unicode 的前导码后,逗号不会被识别为分隔符,所有数据现在都是写入第一列。我不确定出了什么问题。 下面是我在 .ashx 文件中编写的代码。

    DataView priceQuery = (DataView)context.Session["priceQuery"];
    String fundName = priceQuery.Table.Rows[0][0].ToString().Trim().Replace(' ', '_');

    context.Response.Clear();
    context.Response.ClearContent();
    context.Response.ClearHeaders();

    context.Response.ContentType = "text/csv";
    context.Response.ContentEncoding = System.Text.Encoding.Unicode;        
    context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv");
    context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());                

    String output = fundName + "\n";        
    output += "Price, Date" + "\n";

    foreach (DataRow row in priceQuery.Table.Rows)
    
        string price = row[2].ToString();
        string date = ((DateTime)row[1]).ToString("dd-MMM-yy");

        output += price + "," + date + "\n";
    

    context.Response.Write(output);

【问题讨论】:

我知道这不是您问题的一部分,但您不应该使用 output += price + ... 而是使用 StringBuilder 对象。每次您像这样连接一个字符串时,都会重新分配整个新字符串。记住 C# 中的字符串是不可变的对象。 欢迎任何反馈。我会记下并相应地更改它 【参考方案1】:

Looks like MS Office does not support Unicode csv files.

但是some users reported that tab delimiter works.

我会尝试 UTF-8 而不是 Unicode,这可能会导致分隔符被视为 ASCII 字符。

【讨论】:

以上是关于在 asp.net 中编写 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

在ASP.NET MVC中,使用Bundle来打包压缩js和css(转)

ASP.NET和ASP.NETCore多环境配置对比

我可以在哪里存储 XML 文件供浏览器使用 ASP.Net MCV 读取

CSV 文件中的 ASP.NET 智能引号解析问题

ASP.NET_基础

C# asp.net mvc 下载表到csv