我将以下数据存储在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文件时,我正在获取以下数据,这是不正确的。
实际上,我的数据应如下图
我该如何解决问题?
更新1:
如下所示,我正在将DataTable转换为MemoryStream。我还按照AzureDataLakeGen2-CreateFileAsync文章创建了csv文件。
答案 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");