【问题标题】:How do I append CSV using CSV helper?如何使用 CSV 帮助程序附加 CSV?
【发布时间】:2020-05-31 07:41:35
【问题描述】:

我浏览了文档,但没有看到任何内容。我正在使用文档中相同的确切写入功能,但问题是我还需要附加。到目前为止,我尝试阅读它而不是将 CSV 添加到列表中,而不是将列表写入 CSV。有没有更好的方法可以追加?

我对自己的变量使用的确切写入函数

var records = new List<Foo>
{
    new Foo { Id = 1, Name = "one" },
};

using (var writer = new StreamWriter("path\\to\\file.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(records);
}

我用自己的变量阅读的内容:

using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<Foo>();
}

希望有人能帮忙!

【问题讨论】:

    标签: c# csvhelper


    【解决方案1】:

    使用StreamWriter(String, Boolean) 构造函数指定您要附加到现有文件:

    使用默认编码和缓冲区大小为指定文件初始化 StreamWriter 类的新实例。如果文件存在,它可以被覆盖或附加到。如果文件不存在,则此构造函数会创建一个新文件。

    参数

    路径

    字符串

    要写入的完整文件路径。

    追加

    布尔值

    true 将数据附加到文件中; false 覆盖文件。如果指定的文件不存在,则该参数无效,构造函数新建一个文件。

    至于您的 CsvHelper CsvWriter,您需要根据您是追加还是创建,将其配置为省略标头:

    bool append = true;
    var config = new CsvConfiguration(CultureInfo.InvariantCulture);
    config.HasHeaderRecord = !append;
    
    using (var writer = new StreamWriter("path\\to\\file.csv", append))
    {
        using (var csv = new CsvWriter(writer, config))
        {
            csv.WriteRecords(records);
        }
    }
    

    【讨论】:

    • 这是给 CSV Helper 的?
    • 我刚刚测试了你的建议,它添加了包括标题在内的所有内容,我只需要附加 csv
    • 我更新了一个例子,说明 CsvConfiguration 应该如何处理这个问题,但还没有测试自己。
    • 我找到了一种方法,但它真的很乱而且很hacky ty
    • CsvWriter.WriteRecord(单行)表现如何?也许这也是一种追加记录的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多