附加图像表示示例数据这是我将数据表转换为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());
在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。空
,一个超文本标记语言编码的值或其他什么。