有没有办法将数据导出到CSV文件中的特定列?我有数据导出到追加行,但需要指定要保存的列。
我的保存代码是:
{
StreamWriter sw = File.AppendText("log.csv");
{
//need this in column 1
sw.WriteLine(TextBox21.Text + ",");
//need this in column 2
sw.WriteLine(TextBox41.Text + ",");
}
sw.Close();
答案 0 :(得分:4)
var columns = new string[10];
columns[5] = "hello";
sw.WriteLine( string.Join( ",", columns ));
答案 1 :(得分:3)
创建CSV输出是一个已解决的问题,您不必创建自己的编写器。一旦你开始用逗号,引号,换行符,其他编码等来获取数据,那么像删除逗号的天真“解决方案”就会破坏。
有许多可供使用的工作,调试,文档化,高性能的CSV编写器,例如FastCSV,CSVHelper,LINQ to CSV等。我使用过FastCSV,发现它使用简单,可靠,性能高。
答案 2 :(得分:1)
我将您的问题解释为“如何在已存在的csv文件中更新/添加列”。
您可以将oledb驱动程序用于文本:
http://www.codeproject.com/Articles/27802/Using-OleDb-to-Import-Text-Files-tab-CSV-custom
您可能必须将文件作为数据表读取,更新数据表的列,然后如果oledb驱动程序不支持更新则将其重新导出为csv(可能,我有时会惊讶于支持多少通过文本驱动程序)
答案 3 :(得分:1)
您的代码存在的问题是您正在调用WriteLine
两次,这会导致每个值在表格中显示为一行。将代码放在同一行中的代码更改量最少的是将第一个WriteLine
更改为Write
。并且,不需要包含尾随逗号。
StreamWriter sw = File.AppendText("log.csv");
{
sw.Write(TextBox21.Text + ","); // Column 1
sw.WriteLine(TextBox41.Text); // Column 2
}
sw.Close();
如果您需要将某些列留空(以便跳到后面的列),则只输出没有值的其他逗号。
答案 4 :(得分:1)
只需将您的第一个.WriteLine()
更改为.Write()
。
当你在它的时候,你可能想用引号括住那些文本字段。如果有人在其中一个字段中输入逗号,则稍后会关闭日志阅读器。