CsvHelper 使用手册
记录CsvHelper的使用方法
简介
CsvHelper 是一个用于读写 CSV 文件的.NET库。极其快速,灵活且易于使用。
CsvHelper 建立在.NET Standard 2.0 之上,几乎可以在任何地方运行。
我一般使用在对设备数据进行记录和读写。
1创建一个设备数据类
public class ProductData
{
[Name("序号")]
public int ID { get; set; }
[Name("姓名")]
public string Name { get; set; }
}
2创建一个CSV的操作类
public class MyCsv
{
private string _filrPath;
public string FilePath
{
get { return _filrPath; }
set { _filrPath = value; }
}
public MyCsv(string StrFilePath)
{
_filrPath = StrFilePath;
}
public void CreateCSVFileAndHeader()
{
if (!File.Exists(FilePath))
{
using (var writer = new StreamWriter(FilePath, true, Encoding.Default))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(new List<ProductData> { });
}
}
}
public void AppendData(List<ProductData> listdata)
{
// 使用追加模式打开文件,写入数据
using (var streamWriter = new StreamWriter(FilePath, true, Encoding.Default))
using (var csv = new CsvWriter(streamWriter, CultureInfo.InvariantCulture))
{
foreach (var record in listdata)
{
csv.WriteRecord(record);
csv.NextRecord();
}
}
}
public List<ProductData> ReadCsvData()
{
if (File.Exists(FilePath))
{
using (var reader = new StreamReader(FilePath, Encoding.Default))
{
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
List<ProductData> dataRecords = csv.GetRecords<ProductData>().ToList();
return dataRecords;
}
}
}
else
{
return null;
}
}
}
3调用测试
1创建文件
string filePath = "data.csv";
MyCsv myCsv = new MyCsv(filePath);
if (!File.Exists(filePath))
{
myCsv.CreateCSVFileAndHeader();
}
2追加数据
var records = new List<ProductData>
{
new ProductData { ID = 3, Name = "元方" },
new ProductData { ID = 4, Name = "伽罗" },
};
MyCsv myCsv = new MyCsv("data.csv");
myCsv.AppendData(records);
3读取数据
MyCsv myCsv = new MyCsv("data.csv");
var dataRecords = myCsv.ReadCsvData();
dgv.DataSource = dataRecords;
var data = dataRecords.Where(p => p.Name == "元方").FirstOrDefault()?.ID;
图片:
]
public int ID { get; set; }
[Index(1)]
public string Name { get; set; }
}
Name
如果字段名称和列名不一致,可以使用 Name 属性。
public class ProductData
{
[Name("id")]
public int ID { get; set; }
[Name("name")]
public string Name { get; set; }
}