CsvHelper简单上手

CsvHelper是一个CSV文件的帮助类库,可以通过nuget的包管理进行引用。

虽然MS Office办公套件的Excel默认关联CSV文件,但其本质上还是一个文本文件。下面代码解析CSV并创建了CSV对应类实例。

源码

static class Program
{
	static void Main()
	{
		string path = @"C:\Users\Administrator\Desktop\20201201.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; }
}