我是C#的初学者,我正在以CSV格式将一些数据导出到XL表格。我的数据包含一个fullname列,其中数据类似于(John,Delores“Sutton”)。当我将它导出到XL时,它将数据分成两列(或制表符),如Tab1:John和Tab2:Delores“Sutton”,因为逗号(,)。我想要
如果我使用以下代码
string F1 = base.GetColumnText(column, columnValue); //ex: John, Delores \"Sutton\""
string F2 = string.Format("\"{0}\"", F1); //ex: "\"John, Delores\"Sutton\"\""
streamWriter.Write(F2); //ex output in XL is: John, Delores Sutton""
XL中的输出是:
John,Delores Sutton“”
但我想要它:
John,Delores“Sutton”
答案 0 :(得分:1)
您需要使用双引号来表示CSV中的双引号,和所有内容都必须用双引号括起来,因此文本中的输出将如下所示:
"John, Delores ""Sutton"""
因此,您需要在文本上进行查找和替换,以使双引号加倍...
F1 = F1.Replace("\"", "\"\"");
然后将您的格式用引号括起来。
var F2 = string.Format("\"{0}\""), F1);
精明?
答案 1 :(得分:1)
由于逗号用于分隔字段,因此带逗号的值将被解释为两个字段。这些字段必须用引号括起来。因此,包含引号的字段也必须用引号括起来,并且字段中的每个引号必须加倍。
创建CSV文件有很多规则。我写了一个非常完整的类来读取和写入CSV文件,并在我的文章Reading and Writing CSV Files in C#中展示代码。你可能想检查一下。