2

请在 csvhelper 上快速帮助...

csv:姓名,姓氏

人物地图:

    public override void CreateMap()
    {
        Map(x => x.Name).Name("Name");
        Map(x => x.LasName).Name("LastName");
    } 

人物类:

  public string Name { get; set; }
  public string LastName { get; set; }

主要的:

 public void writePerson()
 {
        IEnumerable<Person> records;
        using (var r = new CsvReader(new StreamReader("person.csv")))
        {
            r.Configuration.RegisterClassMap<PersonMap>();
            records = r.GetRecords<Person>().ToList();     
        } 

        using (var w = new CsvWriter(new StreamWriter("person.csv")))
        {
            w.Configuration.RegisterClassMap<PersonMap>();
            w.WriteRecord(records); //rewrite csv list
            w.WriteField("John")); 
            w.WriteField("Doe");
            w.NextRecord();             
        }
    }

错误行:记录 = reader.GetRecords().ToList();

错误:未找到标头记录。

4

3 回答 3

3

好的,所以我用以下方法修复了它:

写:

string persondata = "John, Doe";
using (FileStream fs = new FileStream("person.csv", FileMode.Append, FileAccess.Write))
        using (StreamWriter sw = new StreamWriter(fs))
        { sw.WriteLine(persondata); sw.Dispose(); }

读:

IEnumerable<Person> records;
using (var reader = new CsvReader(new StreamReader(@"person.csv")))
{
        reader.Configuration.RegisterClassMap<PersonMap>();
        records = reader.GetRecords<Person>();
}
于 2014-03-30T19:14:10.150 回答
1

看起来您的 person.csv 没有第一行作为标题行,如下所示:

Name,LastName

请检查 CSV 文件。

于 2014-03-30T02:39:13.280 回答
0

添加以下配置行

w.configuration.HasHeaderRecord = false;

于 2014-05-09T11:51:31.687 回答