将DataTable转换为CSV时出现\ n问题

时间:2019-07-05 09:42:05

标签: c# .net

我将以下数据存储在DataTable中。

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("City", typeof(string));
dt.Columns.Add("Country", typeof(string));
dt.Rows.Add(1, "hiuhohihiukkk\nkngfgkh", "Hongkong", "China");
dt.Rows.Add(2, "Stella", "Newyork", "US");
dt.Rows.Add(3, "Stone", "Hongkong", "China");
dt.Rows.Add(4, "Curt", "Redmond", "US");
dt.Rows.Add(5, "Brady", "Redmond", "US");

如DataTable第一行中所述,我们的值为"hiuhohihiukkk\nkngfgkh",其中包含\ n。现在,当将此数据导出到csv文件时,我正在获取以下数据,这是不正确的。

enter image description here

实际上,我的数据应如下图

enter image description here

我该如何解决问题?

更新1:

如下所示,我正在将DataTable转换为MemoryStream。我还按照AzureDataLakeGen2-CreateFileAsync文章创建了csv文件。

enter image description here

1 个答案:

答案 0 :(得分:0)

此问题已通过添加以下代码解决。如果任何字段值包含下面给出的任何字符,则在字符串后面附加"\""

            char[] CHARACTERS_THAT_MUST_BE_QUOTED = { ',', '"', '\r', '\n'};
            string s = "hiuhohihiukkk\nkngfgkh";
            if (s.IndexOfAny(CHARACTERS_THAT_MUST_BE_QUOTED) > -1) s=  "\"" + s + "\"";
            dt.Rows.Add(1,  s, "Hongkong", "China");