分隔符变通办法CSV C#

我已经写了一个方法,把一个DataTable写入一个看起来像这样的CSV文件;

public void writeToCSV(DataTable dt) { StringBuilder sb = new StringBuilder(); IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>(). Select(column => column.ColumnName); sb.AppendLine(string.Join(",", columnNames)); foreach (DataRow row in dt.Rows) { IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString()); sb.AppendLine(string.Join(",", fields)); } File.WriteAllText("C:\\xampp\\mysql\\data\\sdcdbftest\\test.csv", sb.ToString()); MessageBox.Show("Success"); } 

这写入到CSV文件罚款,但是问题是当我们的用户之一,在我构build数据表的字段之一input逗号。 Excel将此作为一个新列,并且所有数据在写入Excel时都会出现在错误的地方。

我曾尝试使用分号而不是逗号,但迄今为止还没有工作。 有一种方法,我得到它的工作是写入.txt文件与分号作为附加的字符,然后在Excel中打开它,当然select分号作为分隔符。

虽然这是一个解决方法,我宁愿不让用户每次打开Excel文件时都这样做。 有没有解决方法?

您可以使用双引号"来转义包含逗号和换行的列。

来源: 维基百科

您需要分隔您的CSV字段。 如果一个字段包含保留字符,那么你需要用双引号来包装它,例如“我的,新的领域”。 此外,如果字段值本身包含一个双引号,则需要使用额外的双引号进行分隔。