NuGet package CsvHelper

I came across an interesting NuGet package named CsvHelper. CsvHelper basically let’s you create a Csv file from a typed list. You can choose whether or not to include a header automatically. As an example, let’s say you access AFAS to get a list of users.

private static async Task<List<ASB_Totara_User>> GetAfasUserAsync(Logging logging)

string take = 1000;
string path = string.Format(“{0}&Orderbyfieldids=idnumber”, take);

String content;

List<ASB_Totara_User> users = new List<ASB_Totara_User>();

_afasClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(“AfasToken”, ConfigurationManager.AppSettings[“AfasToken”]);
using (HttpResponseMessage response = await _afasClient.GetAsync(path))
using (Stream responseStream = await response.Content.ReadAsStreamAsync())
using (StreamReader reader = new StreamReader(responseStream))
// Get untyped content
content = reader.ReadToEnd();
// Convert to typed response
UserResponse userResponse = JsonConvert.DeserializeObject<UserResponse>(content);
if (userResponse != null)
users = userResponse.rows;

userResponse = null;

return users;


Next you can call another routine to create a Csv file:

// Write CSV content
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer))
csv.Configuration.Delimiter = “;”;


stream.Position = 0;

userResult.Data = reader.ReadToEnd();

Variable userResult.Data is a generic type of type T.

For help on reading and writing Csv files, see: CsvHelper documentation.