Ezfx.Csv 2.4.8

.NET Core 2.0 .NET Standard 2.0 .NET Framework 3.5
Install-Package Ezfx.Csv -Version 2.4.8
dotnet add package Ezfx.Csv --version 2.4.8
<PackageReference Include="Ezfx.Csv" Version="2.4.8" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ezfx.Csv --version 2.4.8
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Ezfx.Csv, 2.4.8"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Ezfx.Csv as a Cake Addin
#addin nuget:?package=Ezfx.Csv&version=2.4.8

// Install Ezfx.Csv as a Cake Tool
#tool nuget:?package=Ezfx.Csv&version=2.4.8
The NuGet Team does not provide support for this client. Please contact its maintainers for support.


Build status Build Status


Install Core from Nuget

Instial Visual Studio Extension from marketplace


To view the introduce Video please visit:


What is CSV

CSV is the abbreviation of Comma-separated values, a file format stores tabular data in plain-text form, usually with .csv extension. CSV is a simple file format that is widely supported by consumer, business, and scientific applications.


Example of a USA/UK CSV file




CSV Entity

In order to build CSV entities, we need something more. Csharp’s Attribute Mechanism provides us what we need by decorate CSV class properties with a custom attribute. Custom attribute defines CVS field’s display name and order. Here is the CsvFieldAttribute:

public class CsvFieldAttribute:Attribute


   public string Name { get; set; }

   public int Order { get; set; }


With CsvFieldAttribute, now we can decorate our own class.

[CsvObject(CodePage = 936, Description = "", HasHeader = true, Name = "")]
public class Car


   [SystemCsvColumn(Name = "Year", Order = 0)]

   public string Year { get; set; }

   [SystemCsvColumn(Name = "Make", Order = 1)]

   public string Make { get; set; }

   [SystemCsvColumn(Name = "Model", Order = 2)]

   public string Model { get; set; }

   [SystemCsvColumn(Name = "Length", Order = 3)]

   public string Length { get; set; }


Generate CSV Class

So, do we need to create CSV classes manually? Of cause not. So I developed the following tool to generate CSV classes:

To Generate CSV Classes, you have to install the VSIX file:

VSIX file

After the installation a new template called EZFX CSV Class will be displayed in your Visual Studio 2010 both in language VB and C#.

Add VB Class:


Add C# Class:


After click of add, a CSV Generation Wizard Window will be displayed, you can select a CSV file by click the browse button, this Wizard support Excel(xls, xlsx) and Access files(mdb, accdb), too. You specify the encoding for the CSV file and table name for Excel and Access file.

CSV Generation Wizard

The following is the generated file:

The C# code:

using Ezfx.Csv;

namespace Cars.CS

    [CsvObject(CodePage = 936, Description = "", HasHeader = true, Name = "", MappingType = CsvMappingType.Title, Delimiter = ",")]
    public class CarCsv

        /// <summary>
        /// 0, Year
        /// </summary>
        [SystemCsvColumn(Name = "Year", Ordinal = 0, Alias = "")]
        public string Year { get; set; }

        /// <summary>
        /// 1, Make
        /// </summary>
        [SystemCsvColumn(Name = "Make", Ordinal = 1, Alias = "")]
        public string Make { get; set; }

        /// <summary>
        /// 2, Model
        /// </summary>
        [SystemCsvColumn(Name = "Model", Ordinal = 2, Alias = "")]
        public string Model { get; set; }

        /// <summary>
        /// 3, Length
        /// </summary>
        [SystemCsvColumn(Name = "Length", Ordinal = 3, Alias = "")]
        public string Length { get; set; }


The VB code:

Imports Ezfx.Csv

<CsvObject(CodePage:=936, Description:="", HasHeader:=True, MappingType:=Ezfx.Csv.CsvMappingType.Title, Name:="", Delimiter:=",")> _
Public Class CarCsv

    ''' <summary>
    ''' 0, Year
    ''' </summary>
    <SystemCsvColumn(Alias:="", Ordinal:=0, Name:="Year")> _
    Public Property Year() As String

    ''' <summary>
    ''' 1, Make
    ''' </summary>
    <SystemCsvColumn(Alias:="", Ordinal:=1, Name:="Make")> _
    Public Property Make() As String

    ''' <summary>
    ''' 2, Model
    ''' </summary>
    <SystemCsvColumn(Alias:="", Ordinal:=2, Name:="Model")> _
    Public Property Model() As String

    ''' <summary>
    ''' 3, Length
    ''' </summary>
    <SystemCsvColumn(Alias:="", Ordinal:=3, Name:="Length")> _
    Public Property Length() As String

End Class

CSV Read

The following code reads a csv file and put data to Csv Objects.

CarCsv[] imdbs = CsvContext.ReadFile<ImdbCsv>("cars.csv");

You can also provide csv content as a string

CarCsv[] imdbs = CsvContext.ReadContext<CarCsv>("...");

Document Generator

With Document Generator, you can get the schema of the CSV files or the Excel and Access files and save the result to a CSV file for further edit.


CSV in Wikipedia: http://en.wikipedia.org/wiki/Comma-separated_values

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net35 net40 net403 net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.4.8 691 4/8/2019
2.2.8 554 2/3/2019
2.2.3 499 1/31/2019
2.2.0 720 1/29/2019
2.0.0 734 1/21/2019
1.0.0 701 1/12/2019

fixed export bugs