使用C#编写CSV时,如何防止添加额外的列?

时间:2016-09-07 18:59:32

标签: c# csv

我发现并调整了一些C#代码,以删除某些CSV文件中的嵌入式双引号。我不太使用C#,所以我不确定代码为什么在原始CSV中添加额外的列。我假设它与WriteAllLines方法有关。我打印出CSV标题:

Index([u'State', u'Birthdate', u'Never Contact Type', u'Opt In Marketing',
   u'Pref. Contact Type', u'Individual Source', u'Individual Status',
   u'Individual Sub Type', u'Individual Type', u'Address 1', u'Address 2',
   u'City', u'Company', u'County', u'Email Address', u'First Name',
   u'Last Name', u'Mobile Number', u'Home/Main Number', u'Postal Code',
   u'Salutation', u'Work Number', u'Assigned To', u'Purchase Date',
   u'Entity Id', u'Event Id', u'Sales Sub Type', u'Sales Type',
   u'Sales Source', u'Sales Status', u'Tracking Code',
   u'DMS Deal/RO Number', u'Deal Date', u'Insert Date', u'Update Date',
   u'Make', u'Model', u'Series', u'Stock Num', u'Style', u'VIN Number',
   u'Year', u'Unnamed: 42']

正如您所看到的,当我运行时会添加最后一列:

static void Main(string[] args)
{
    string path = @"some_filepath";
    if (Directory.Exists(path))
    {
        string[] files = Directory.GetFiles(path);


        foreach(string file in files)
        {
            if (file.EndsWith(".csv"))
            {
                var fileContent = File.ReadAllLines(file);
                var fileContentUpdated = fileContent.Select(x => new Regex(@"(?<!^)(?<!\,)""(?!\,)(?!$)").Replace(x, "'")).ToArray();
                File.WriteAllLines(file, fileContentUpdated);
            }
        }
    }
}

如何防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

我会将相同的评论作为答案给你标记。

  

在任何文本编辑器中打开您的csv以确保该行不会   以COMMA结束