我正在尝试使用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。什么是正确的代码?我该如何设置标题行?
感谢任何帮助。我实在无法理解这一点。
答案 0 :(得分: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
}