使用CsvHelper写入数据时出现异常

5

我正在尝试使用CsvHelper将数据写入CSV文件。然而,我总是收到以下异常:

CsvHelper.Configuration.ConfigurationException:"继承IEnumerable的类型无法自动映射。您是否意外调用了GetRecord或WriteRecord,这些方法作用于单个记录,而没有调用作用于记录列表的GetRecords或WriteRecords?"

这是我的C#代码:

TextWriter outfile = new StreamWriter("blatest.csv");

List<string> test = new List<string>
{
  "hello",
  "world"
};

CsvWriter csv = new CsvWriter(outfile);
csv.WriteRecords(test);

我想将一个List<string>或(最好是)List<Dictionary<string,string>> 写入CSV文件。请问正确的代码是什么?我该如何设置表头呢?
非常感谢您的帮助。这个问题真的让我很困扰。

@Nisarg,另一篇帖子是关于使用CsvHelper读取文件的。我的帖子是关于使用CsvHelper写入文件的,所以它不是重复的。从阅读其他帖子中,我无法提取任何与CsvHelper相关的信息(我不想使用愚蠢的VBA库)。 - Markus
1个回答

3

出现错误是因为string实现了IEnumerable接口(因为它是char[])。通常使用WriteRecords时,您需要传入自定义对象的IEnumerable

您可以尝试另一种方法(示例

using(var stream = new MemoryStream())
using(var reader = new StreamReader(stream))
using(var writer = new StreamWriter(stream))
using(var csvWriter = new CsvHelper.CsvWriter(writer))
{
    //csvWriter.Configuration.HasHeaderRecord = false;

    foreach( var s in test)
    {
        csvWriter.WriteField(s);
    }

    writer.Flush();
    stream.Position = 0;     
    reader.ReadToEnd(); //dump it where you want           
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接