Skip to content

CSVHelper

Overview

Setup

enum ErrorSeverity
{
    Critical,
    Warning,
    Suggestion,
    Unknown
}

Using Property name matching with CSV file headers

internal class StaadError
{
    public ErrorSeverity ErrorType { get; set; }
    public string ErrorMessage { get; set; }
    public string Suggestion { get; set; }
}

Using Name Attibute match CSV File header

internal class StaadError
{
    public StaadError()
    {
        Severity = ErrorSeverity.Unknown;
    }

    [Name("ErrorType")]
    public ErrorSeverity Severity { get; set; }

    [Name("ErrorMessage")]
    public string Message { get; set; }

    [Name("Suggestion")]
    public string Solution { get; set; }
}

Read Data

string csvData = System.IO.File.ReadAllText("ErrorData.csv");

using var reader = new System.IO.StringReader(csvData);
using var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture);
var records = csv.GetRecords<StaadError>();
var errors = new List<StaadError>();

foreach (StaadError record in records)
{
    Console.WriteLine($"{record.ErrorType},{record.ErrorMessage},{record.Suggestion}");
    errors.Add(record);
}

Write Data

var errors = new List<StaadError>();

//Code To populate errors


//Generate new CSV file from the list
using var writer = new System.IO.StreamWriter("GeneratedErrorData.csv");
using var csvWriter = new CsvHelper.CsvWriter(writer, System.Globalization.CultureInfo.InvariantCulture);
csvWriter.WriteRecords(errors);