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 回答