This site is still under development, meaning that it may lack content and certain features may not work properly.

Skybrud.Csv

Skybrud.Csv is a small library for parsing and generating CSV files. It's written in .NET, and supports both .NET Standard 1.3 and .NET Framework 4.5 (and newer).

Installation

To install the package, pick one of the two methods below:

  1. NuGet Package
    Install this NuGet package in your Visual Studio project. Makes updating easy.

  2. ZIP file
    Grab a ZIP file of the latest release; unzip and move the Skybrud.Csv.dll for your target framework to the bin directory of your project.

Usage

Generate and save a new CSV file using method chaining
The packages supports method chaining, so you can generate a new CSV file as shown below. Notice that you can specify both the separator and encoding when saving to disk.

CsvFile csv1 = new CsvFile()
    .AddColumn("Id")
    .AddColumn("Name")
    .AddColumn("Description")
    .AddRow()
        .AddCell("1234")
        .AddCell("Hej med\ndig")
        .AddCell("hello \"world\"")
    .AddRow()
        .AddCell("5678")
        .AddCell("rød grød med fløde")
        .AddCell("hello")
    .File
    .Save("C:/Example.csv", CsvSeparator.Tab, Encoding.UTF8);

Load a CSV file from disk
When loading a CSV file from disk, you specify the path as well as the separator and encoding.

If the separator and encoding is left out, they will default to CsvSeparator.Tab and Encoding.UTF8 respectively. You can see the CsvFile class for more about this.

// Load the file from disk (assuming tabular as separator and UTF-8 as encoding)
CsvFile csv2 = CsvFile.Load("C:/Example.csv", CsvSeparator.Tab, Encoding.UTF8);

// Iterate through the columns
foreach (CsvColumn column in csv2.Columns)
{
    Console.WriteLine(column.Index + ". " + column.Name);
}

// Iterate through the rows
foreach (CsvRow row in csv2.Rows)
{
    
    Console.WriteLine("Row #" + (row.Index + 1));
    
    // Iterate throug the cells of the row
    foreach (CsvCell cell in row.Cells)
    {
        Console.WriteLine(cell.Column.Name + " => " + cell.Value);
    }

}