public class Student
{
public int ID { get; set; }
public string Name { get; set; }
}
csv 文件数据
ID,Name
1,Tom
2,Jerry
3,ma
4,le
5,ma
using (var reader = new StreamReader("malema-student.csv"))
{
// 其它国家如荷兰要用 new CultureInfo("nl-nl")
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<Student>();
}
}
读取 csv 文件时,空行将被忽略,若空行中包含空格,将报错。 如果是 Excel 编辑的 CSV 文件,空行将会变成仅包含分隔符 , 的行,也会报错。 数据量不大的情况下,直接用这个。
把数据读到到出来后,我们如果要过滤数据的话就可以用Linq来做数据的处理非常的方便
using (var reader = new StreamReader("malema-student.csv"))
{
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
while (csv.Read())
{
var record = csv.GetRecord<Student>();
}
}
}
GetRecords
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var id = csv.GetField<int>(0);
var name = csv.GetField<string>("Name");
}
}
逐行读取时,可以不管标题行,但是,这里不行。
csv.Read(); 这句是读取标题,如果没有的话,while 循环第一次取到的是标题,肯定会报错。
csv.ReadHeader(); 这句是给标题赋值,如果没有的话,csv.GetField
使用 TryGetField 可以防止意外的报错。
csv.TryGetField(0, out int id);