Skip to content

Getting Started

Jeroen Haegebaert edited this page Nov 13, 2020 · 5 revisions

Installation

The nuget package is called Net.Code.Csv. After installing this package, you can start reading and writing Csv data.

The two entry points to this library are the ReadCsv and WriteCsv static classes.

For the examples, we're assuming a file called "sample.csv" that contains this data

FirstName,LastName,BirthDate
John,Peterson,1980-05-14

Reading a CSV file

Manually (using a DataReader approach)

To read this CSV file, IDataReader-style, use the ReadCsv.FromFile method as follows:

using System;
using Net.Code.Csv;
var reader = ReadCsv.FromFile("sample.csv", hasHeaders: true);
while (reader.Read())
{
    string firstName = reader.GetString("FirstName");
    string lastName = reader.GetString("LastName");
    DateTime birthDate = reader.GetDateTime("BirthDate");
}   

This approach will read the data as string fields, and convert them on demand to the requested data types.

Strong typing

NetCsv also has a facility to read data in a strongly typed way. For this, you use the generic overloads ReadCsv.FromFile<T>, ReadCsv.FromStream<T> and ReadCsv.FromFile<T> methods. These will infer schema information from the type and convert the csv records to actual class or record instances:

using System;
using Net.Code.Csv;

record Person(string FirstName, string LastName, [CsvFormat("yyyy-MM-dd")]DateTime BirthDate);

var people = ReadCsv.FromFile<Person>("sample.csv", hasHeaders: true);
foreach (var person in people)
{
    string firstName = person.FirstName;
    string lastName = person.LastName;
    DateTime birthDate = person.BirthDate;
}   

Here, the schema is defined by a record Person with 3 properties (regular classes are also supported). Note that the CsvFormat attribute can be used to describe the serialization format of DateTime attributes.

Writing a CSV file

Writing data as CSV is very similar. For example, to write the data above back to a CSV file:

using System;
using Net.Code.Csv;

record Person(string FirstName, string LastName, [CsvFormat("yyyy-MM-dd")]DateTime BirthDate);

var people = new [] { new Person("John", "Peterson", new DateTime(1980, 5, 14)) };

WriteCsv.ToFile("out.csv", people);
Clone this wiki locally