CSV Helper
Install Packages
PM> Install-Package CsvHelper> dotnet add package CsvHelperSample Utilities
using CsvHelper;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace CsvTest
{
public class CsvUtils
{
public static List<T> GetRecords<T>(string path)
{
using (var sr = new StreamReader(path))
{
var reader = new CsvReader(sr);
return reader.GetRecords<T>().ToList();
}
}
public static void WriteRecords<T>(List<T> records, string path)
{
using (var sw = new StreamWriter(path, false, System.Text.Encoding.UTF8))
{
var writer = new CsvWriter(sw);
writer.WriteRecords(records);
}
}
public static void WriteDictionaryRecords(List<Dictionary<string, object>> records, string path, bool includeHeader = true)
{
using (var sw = new StreamWriter(path))
{
var writer = new CsvWriter(sw);
bool headerInited = includeHeader ? false : true;
foreach (var record in records)
{
if (!headerInited)
{
headerInited = true;
foreach (var kvp in record)
{
writer.WriteField(kvp.Key);
}
//ensure write end of record after the header
writer.NextRecord();
}
//write record field by field
foreach (var kvp in record)
{
writer.WriteField(kvp.Value);
}
//ensure write end of record when using WriteField method
writer.NextRecord();
}
}
}
}
}Sample Extensions
Sample Usage
Resource
Last updated