CsvHelper是一个CSV文件的帮助类库,可以通过nuget的包管理进行引用。
虽然MS Office办公套件的Excel默认关联CSV文件,但其本质上还是一个文本文件。下面代码解析CSV并创建了CSV对应类实例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | static class Program { static void Main() { string path = @"C:\Users\Administrator\Desktop201201.csv" ; string csvStr = System.IO.File.ReadAllText(path, Encoding.Default); //using (var sr1 = new System.IO.StreamReader(path, Encoding.Default)) //从文件读取 using ( var sr1 = new System.IO.StringReader(csvStr)) //获得的是字符串的情况下,使用StringReader { var csv = new CsvReader(sr1, System.Globalization.CultureInfo.InvariantCulture); csv.Context.RegisterClassMap<UcCreativeMap>(); //注册映射类。值得注意的是在很多博文示例中都是使用这句代码“csv.Configuration.RegisterClassMap”注册映射类的,但在Ver26.1.0的CsvHelper中,并不是这样注册的,具体请移步GitHub查看源码Demo。 var records = csv.GetRecords<UcCreative>(); var list = records.ToList(); // 把 CSV 记录映射到 MyClass,返回的 records 是个 IEnumerable<T> 对象 } } } /// <summary> /// 映射表头名字 /// </summary> public class CreativeMap : CsvHelper.Configuration.ClassMap<UcCreative> { public CreativeMap() { Map(o => o.Date).Name( "日期" ); //指定列头名称 Map(o => o.Date).Name( "日期" ).NameIndex(0); // 指定存在同名列头的顺序 Map(o => o.Date).Index(0); // 指定列头的索引顺序 } } /// <summary> /// Model 类 /// </summary> public class Creative { public string Date { get ; set ; } public string AccountID { get ; set ; } public string Account { get ; set ; } public string AdGroupID { get ; set ; } public string AdGroup { get ; set ; } } |