1

このCSVファイルの最初の行にはすでに列名が含まれているため、最初の行を無視して、StringBuilderを使用して2行目から書き込みを開始します。

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());
            }

ついに私は、私が必要としているのはファイルを書くことではなく、ファイルを編集することであることを理解しました。ですから、心の変化が最終的に答えを与えます。 File.AppendAllTextは、私が本当に必要としているものです。

4

2 に答える 2

1

このようなもの?

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

于 2013-02-25T20:34:15.857 に答える
1

試す

File.AppendText( "pathtofile")

また

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");
}
于 2013-02-25T20:34:45.177 に答える