将列写入CSV文件c#

时间:2013-04-24 16:52:03

标签: c# wpf

有没有办法将数据导出到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();

5 个答案:

答案 0 :(得分:4)

是的,就像这样:

var columns = new string[10];

columns[5] = "hello";

sw.WriteLine( string.Join( ",", columns ));

答案 1 :(得分:3)

创建CSV输出是一个已解决的问题,您不必创建自己的编写器。一旦你开始用逗号,引号,换行符,其他编码等来获取数据,那么像删除逗号的天真“解决方案”就会破坏。

有许多可供使用的工作,调试,文档化,高性能的CSV编写器,例如FastCSVCSVHelper,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()

当你在它的时候,你可能想用引号括住那些文本字段。如果有人在其中一个字段中输入逗号,则稍后会关闭日志阅读器。

相关问题