CsvHelper是一个CSV文件的帮助类库,可以通过nuget的包管理进行引用。
虽然MS Office办公套件的Excel默认关联CSV文件,但其本质上还是一个文本文件。下面代码解析CSV并创建了CSV对应类实例。
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; }
}