【问题标题】:Exception when writing data with CsvHelper使用 CsvHelper 写入数据时出现异常
【发布时间】:2018-03-02 11:14:49
【问题描述】:

我正在尝试使用 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&lt;string&gt; 或(理想情况下)List&lt;Dictionary&lt;string, string&gt;&gt; 写入 CSV。什么是正确的代码?以及如何设置标题行?

感谢任何帮助。我真的无法理解这一点。

【问题讨论】:

  • @Nisarg 另一篇文章是关于使用 CsvHelper 读取文件的。我的帖子是关于用 CsvHelper 编写文件的,所以它不是重复的。通过阅读另一篇文章,我无法为我的 CsvHelper 问题提取任何相关信息(我不想要愚蠢的 VBA 库)

标签: c# csv exception csvhelper


【解决方案1】:

报错是因为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           
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2023-04-04
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多