提问者:小点点

如何删除行值中不需要的逗号转换为csv时Datable?[重复]


附加图像表示示例数据这是我将数据表转换为CSV的代码。在我的行中,值包含许多逗号。因此,使用逗号分隔符创建CSV时,值显示未定义的格式

    StringBuilder tempsb = new StringBuilder(); 

    IEnumerable<string> columnNames = table.Columns.Cast<DataColumn>().
                              Select(column => column.ColumnName);
    tempsb.AppendLine(string.Join(",", columnNames));

    foreach (DataRow row in table.Rows)
    {
     IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
      tempsb.AppendLine(string.Join(",", fields));
     }

     File.WriteAllText("sample.csv", tempsb.ToString());

共2个答案

匿名用户

在CSV文件中,当字段中出现时,该字段需要用双引号括起来。如果字段包含双引号,则双引号应加倍。

所以你需要像这样创建你的字段:

    IEnumerable<string> fields = row.ItemArray
        .Select(field => field.ToString().Contains(",") || field.ToString().Contains("\"")
            ? String.Format("\"{0}\"", field.ToString().Replace("\"", "\"\"")) 
            : field.ToString());

匿名用户

我建议在你的问题的评论中使用克里斯提供的第二个或第三个选项,但是,为了回答你提出的问题,你会像这样使用第一个选项:

IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString().Replace(",", myReplacementString);

替换的字符串可能是string。空,一个超文本标记语言编码的值或其他什么。