Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在StringBuilder忽略csv的第一行/行的情况下写入csv文件?_C#_Csv_Stringbuilder - Fatal编程技术网

C# 如何在StringBuilder忽略csv的第一行/行的情况下写入csv文件?

C# 如何在StringBuilder忽略csv的第一行/行的情况下写入csv文件?,c#,csv,stringbuilder,C#,Csv,Stringbuilder,因为这个CSV文件的第一行已经包含了列名,所以我只想忽略第一行,然后用StringBuilder从第二行开始写 StringBuilder sb = new StringBuilder(); foreach (DataRow dr in distinctValues.Rows) { vendor = dr.ItemArray[0].ToString(); for (int i = 0;

因为这个CSV文件的第一行已经包含了列名,所以我只想忽略第一行,然后用StringBuilder从第二行开始写

StringBuilder sb = new StringBuilder();
            foreach (DataRow dr in distinctValues.Rows)
            {
                vendor = dr.ItemArray[0].ToString();
                for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                {
                    if (vendor == ds.Tables[0].Rows[i]["VendorCode"].ToString())
                    {
                        for (int j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
                        {
                            if (j != 0)
                                sb.Append(",");
                            sb.Append(ds.Tables[0].Rows[i][ds.Tables[0].Columns[j]]);
                        }
                        sb.AppendLine();
                    }
                }
                File.WriteAllText(@csvFile, sb.ToString());
            }
StringBuilder sb=新建StringBuilder();
foreach(数据行dr in distinctValues.Rows)
{
vendor=dr.ItemArray[0].ToString();
对于(inti=0;i类似的东西

class Program
{
    private const string csv ="Header\r\nLine1\r\nLine2";
    static void Main(string[] args)
    {
        StringReader reader = new StringReader(csv);

        StringBuilder builder = new StringBuilder();
        bool header = true;
        while (true)
        {
            string line = reader.ReadLine();

            if(header)
            {
                header = false;
                continue;
            }

            if (line == null)
                break;
            builder.AppendLine(line);

        }

        Console.WriteLine(builder.ToString());
        Console.ReadLine();
    }
}
HTH

试试看

FileMode.Append
通过
FileStream

如果是
File.AppendText
,在下面的示例中,对
sb.AppendLine()
的所有调用都将变成
sw.WriteLine()

 // This text is always added, making the file longer over time 
 // if it is not deleted.

using (StreamWriter sw = File.AppendText(path)) 
{
    sw.WriteLine("This");
    sw.WriteLine("is Extra");
    sw.WriteLine("Text");
}

向我们展示你目前拥有的代码。你目前拥有的代码是什么?这不是一项困难的任务。你是否尝试过在互联网上搜索C#示例?听起来你好像没有尝试过anything@DJKRAZE我试过了。但是只有读csv文件而不是写csv文件的解决方案。在第一行之后有没有行包含您想要的列名要保留吗?我认为您应该改为以追加模式编写文件。查看FileMode.append。如果您真的喜欢这个答案,那么盲目地调用reader.ReadLine()可能更简单然后在开始循环之前放弃结果。这将删除循环体中的所有条件逻辑,因为您知道您已经放弃了第一行。当然,假设头将始终存在于文件中。这些类型的不变量使生活变得更简单。伙计,你很快也很聪明。谢谢兄弟。有什么我能做的吗哦,救命啊。