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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用CsvHelper写入数据时出现异常相关的知识,希望对你有一定的参考价值。

我正在尝试使用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。什么是正确的代码?我怎样才能设置标题行?

任何帮助表示赞赏。我真的无法绕过这个。

答案

对于错误,这是因为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           
}

以上是关于使用CsvHelper写入数据时出现异常的主要内容,如果未能解决你的问题,请参考以下文章

访问片段的子视图时出现空指针异常

使用片段中的处理程序时出现非法状态异常

为啥将聚合数据帧写入文件接收器时出现异常?

将数据写入 Hive Spark SQL 时出现 ArrayIndexOutOfBoundsException 异常

从活动调用片段方法时出现空指针异常

使用 strncpy 时出现异常