我正在尝试将数据附加到现有的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。
答案 0 :(得分:0)
如果我理解正确,你有:
A,B,C
在CSV文件中。您想将数据附加到每一行:
A,B,C,d,E,F
您所看到的是
A,B,C
然后再下一行:
d,E,F
这是因为AppendAllText方法只是写到文件的底部。
要执行您想要的操作,您需要阅读输出文件,解析内容,在正确的位置插入额外的数据,然后重新保存文件..
我会尝试将文件加载到流中,读取一行,将新数据附加到行的末尾,然后将行写入新流(让我们调用此最终输出),重复此操作直到你'已解析所有数据,然后保存最终输出流。
这假设CSV数据在每行末尾都有换行符,回车符或两者。