ASP.NET C#将数据导出为CSV格式,双引号未保留

时间:2013-03-18 14:55:04

标签: c# asp.net csv

我正在尝试使用ASP.NET C#将一些数据导出到CSV 我使用这段代码:

private void writeCSVfile(DataTable theData, string fileName)
{
     StringBuilder dataString = new StringBuilder();
     string currentId = Guid.Empty.ToString();
     HttpContext context = HttpContext.Current;
     context.Response.Clear();

     foreach (DataColumn column in GTDSSearchData.Columns)
     {
        if (column.ColumnName.ToString().ToLower() != "the_id")
        {
            dataString.Append(column.ColumnName + ",");
        }
     }
     dataString.Remove(dataString.Length - 1, 1);
     dataString.Append(Environment.NewLine);

     foreach (DataRow row in GTDSSearchData.Rows)
     {
        currentId = row[1].ToString();
        for (int i = 1; i < GTDSSearchData.Columns.Count; i++)
        {
            dataString.Append(row[i].ToString().Replace(",", string.Empty) + ",");
        }
        dataString.Remove(dataString.Length - 1, 1);
        dataString.Append(Environment.NewLine);
    }

    context.Response.Write(dataString.ToString());
    context.Response.ContentType = "text/csv";
    context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");
    context.Response.End();
}

我的dataString是

test1, 1  
"hello world", 10  
test2, 2

结果CSV文件包含这些内容

test1, 1  
hello world, 10  
test2, 2

你知道为什么我的双引号会消失,以及在导出到CSV文件时如何保留它们。

非常感谢。

2 个答案:

答案 0 :(得分:2)

您需要将每个引号用双引号括起来。换句话说,你需要让你的程序写下这个:

test1, 1  
"""hello world""", 10  
test2, 2

然后它将保留双引号

答案 1 :(得分:0)

使用转义序列,例如\“ - 双引号。 这可以帮助您https://stackoverflow.com/a/323670/1600531