0

データテーブルを CSV ファイル形式に保存する関数を作成しました。しかし、問題は、関数を呼び出すときに関数が古いデータを削除し、新しいデータを書き込むことです。古いデータを保持し、新しいデータをファイルの最後に書き込みたいだけです。どうやってやるの?私の機能は次のとおりです。

        public void CreateCSVFile(DataTable dt, string strFilePath, bool isFirstRowHeader)
    {
        StringBuilder sb = new StringBuilder();

        if (isFirstRowHeader == true)
        {
            var columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray();
            sb.AppendLine(string.Join(",", columnNames));
        }

        foreach (DataRow row in dt.Rows)
        {
            var fields = row.ItemArray.Select(field => field.ToString()).ToArray();
            sb.AppendLine(string.Join(",", fields));
        }

        File.WriteAllText(strFilePath, sb.ToString());
    }
4

2 に答える 2

1

File.AppendAllTextの代わりにFile.WriteAllText、既存の CSV ファイルの末尾に追加されます。もちろん、ファイルが既に存在する場合は、ヘッダーを書き出さないようにする必要があります。

于 2012-12-02T13:24:03.027 に答える
0

代わりに StreamWriter を使用してみて、append パラメータを true に設定してください。

        string filename = @"c:\test.csv";
        StringBuilder sb = new StringBuilder();

        sb.Append("test1");
        sb.Append("test2");

        StreamWriter sw = new StreamWriter(filename, true);
        sw.Write(sb.ToString());
        sw.Close();

これでうまくいくはずです。

于 2012-12-02T13:25:07.657 に答える