C#将数据附加到数据表中现有CSV文件的列中

时间:2012-09-21 09:14:54

标签: c# csv datatable

我正在尝试将数据附加到现有的CSV文件中以便在excel中使用。

我正在检索的数据量非常高,所以我不能填充数据表然后将其写入CSV。目前,我正在用数据填充表的每一列,将其写入文件,然后清除表并重新启动。

只要它在单独的列中将数据添加到CSV,但它会在下一列中的现有数据下添加新数据。

这是程序写入CSV的方式:

  public void Output_CSV()
    {
        StringBuilder sb = new StringBuilder();

        foreach (DataRow row in DataTable.Rows)
        {
            IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
            sb.AppendLine(string.Join(",", fields));
        }

        File.AppendAllText(outPut, sb.ToString());

        sb.Clear();
    }

此代码添加表中的所有数据,包括上一列中的空白单元格,在下面添加当前数据。有没有办法在表格中选择一列,并将该列中的行添加到CSV。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你有:

A,B,C

在CSV文件中。您想将数据附加到每一行:

A,B,C,d,E,F

您所看到的是

A,B,C

然后再下一行:

d,E,F

这是因为AppendAllText方法只是写到文件的底部。

要执行您想要的操作,您需要阅读输出文件,解析内容,在正确的位置插入额外的数据,然后重新保存文件..

我会尝试将文件加载到流中,读取一行,将新数据附加到行的末尾,然后将行写入新流(让我们调用此最终输出),重复此操作直到你'已解析所有数据,然后保存最终输出流。

这假设CSV数据在每行末尾都有换行符,回车符或两者。

相关问题