删除标题时将相同的CSV添加到一起

kmc*_*117 2 c# csv header append

我想要添加6个具有相同布局和标题的CSV.

我已经能够通过将6个csv中的每一个加载到它们自己的单独数据表中并删除每个数据表的第一行来实现这一点.最后,我使用ImportRow方法将它们附加在一起.

DataTable table1 = csvToDataTable(@"C:\Program Files\Normalization\Scan1.csv");
DataTable table2 = csvToDataTable(@"C:\Program Files\Normalization\Scan2.csv");
DataTable table3 = csvToDataTable(@"C:\Program Files\Normalization\Scan3.csv");
DataTable table4 = csvToDataTable(@"C:\Program Files\Normalization\Scan4.csv");
DataTable table5 = csvToDataTable(@"C:\Program Files\Normalization\Scan5.csv");
DataTable table6 = csvToDataTable(@"C:\Program Files\Normalization\Scan6.csv");

        foreach (DataRow dr in table2.Rows)
        {
            table1.ImportRow(dr);
        }
        foreach (DataRow dr in table3.Rows)
        {
            table1.ImportRow(dr);
        }
        foreach (DataRow dr in table4.Rows)
        {
            table1.ImportRow(dr);
        }
        foreach (DataRow dr in table5.Rows)
        {
            table1.ImportRow(dr);
        }
        foreach (DataRow dr in table6.Rows)
        {
            table1.ImportRow(dr);
        }

        CreateCSVFile(table1, @"C:\Program Files\Normalization\RackMap.csv");
Run Code Online (Sandbox Code Playgroud)

我觉得这很笨重,而且不是很可扩展,但是当我尝试在CSV级别附加时,我无法处理标题.有什么建议?

TIA

JYe*_*ton 7

获取与掩码匹配的所有文件的DirectoryInfo *.csv

创建for循环以迭代结果.

导入每个文件时删除第一行.

编辑:

如果您只想组合文件,而不是导入到数据表中,则可以将它们视为文本文件.连接它们,每次都删除标题行.这是一个例子:

string myPath = @"K:\csv";

DirectoryInfo csvDirectory = new DirectoryInfo(myPath);
FileInfo[] csvFiles = csvDirectory.GetFiles("*.csv");
StringBuilder sb = new StringBuilder();
foreach (FileInfo csvFile in csvFiles)
    using (StreamReader sr = new StreamReader(csvFile.OpenRead()))
    {
        sr.ReadLine(); // Discard header line
        while (!sr.EndOfStream)
            sb.AppendLine(sr.ReadLine());
    }
File.AppendAllText(Path.Combine(myPath, "output.csv"), sb.ToString());
Run Code Online (Sandbox Code Playgroud)