{"id":1272,"date":"2023-03-30T10:00:21","date_gmt":"2023-03-30T03:00:21","guid":{"rendered":"https:\/\/csharptutorial.net\/?page_id=1272"},"modified":"2023-03-30T10:08:38","modified_gmt":"2023-03-30T03:08:38","slug":"csharp-read-csv-file","status":"publish","type":"page","link":"https:\/\/www.csharptutorial.net\/csharp-file\/csharp-read-csv-file\/","title":{"rendered":"C# Read CSV File"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn how to use read CSV files in C# using the CsvHelper library.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction to the CSVhelper library<\/h2>\n\n\n\n<p>CsvHelper is a popular open-source library for reading and writing CSV (Comma Separated Value) files in C#.  <\/p>\n\n\n\n<p>CSVHelper is fast, flexible, and easy to use. It provides you with features to customize the CSV parsing and writing process. For example, it can map CSV columns to object properties, specify custom delimiters and quotes, and handle type conversions and errors.<\/p>\n\n\n\n<p>The CsvHelper library is available as a NuGet package. Therefore, you need to install it via the command line or using Visual Studio&#8217;s NuGet Package Manager.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing CsvHelper<\/h2>\n\n\n\n<p>The following shows you how to install the CsvHelper library using the package manager console, .Net CLI console, and Visual Studio:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Package Manager Console<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Install-Package CsvHelper<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"net-cli-console\">.NET CLI Console<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">dotnet add package CsvHelper<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Visual Studio<\/h3>\n\n\n\n<p>If you use Visual Studio, you can follow these steps:<\/p>\n\n\n\n<p>First, right-click the <code>Dependencies<\/code> and select the <code>Manager NuGet Packages...<\/code> menu item:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"364\" src=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/03\/csvhelper-add-package.png\" alt=\"\" class=\"wp-image-1273\" srcset=\"https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/csvhelper-add-package.png 450w, https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/csvhelper-add-package-300x243.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure>\n\n\n\n<p>Second, type the CsvHelper, choose the package as shown in the following picture, and click the <strong>Install<\/strong> button:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"406\" src=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/03\/NuGet-add-package-CsvHelper-1024x406.png\" alt=\"\" class=\"wp-image-1274\" srcset=\"https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/NuGet-add-package-CsvHelper-1024x406.png 1024w, https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/NuGet-add-package-CsvHelper-300x119.png 300w, https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/NuGet-add-package-CsvHelper-768x304.png 768w, https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/NuGet-add-package-CsvHelper.png 1040w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Preparing a sample CSV file for reading<\/h2>\n\n\n\n<p><a href=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/03\/data.csv\" target=\"_blank\" rel=\"noreferrer noopener\">Download the following data.csv file<\/a> and copy it to the project directory. To allow the program to read the CSV file, you need to change its setting so that Visual Studio will copy it to the output directory:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"482\" height=\"530\" src=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/03\/Csvhelper-File-Properties.png\" alt=\"\" class=\"wp-image-1275\" srcset=\"https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/Csvhelper-File-Properties.png 482w, https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/Csvhelper-File-Properties-273x300.png 273w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"432\" height=\"304\" src=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/03\/LINQ-Sample-Data-Settings.png\" alt=\"\" class=\"wp-image-946\" srcset=\"https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/LINQ-Sample-Data-Settings.png 432w, https:\/\/www.csharptutorial.net\/wp-content\/uploads\/2023\/03\/LINQ-Sample-Data-Settings-300x211.png 300w\" sizes=\"auto, (max-width: 432px) 100vw, 432px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Reading a CSV file into a collection of dynamic objects<\/h2>\n\n\n\n<p>The following program reads the data.csv file and converts CSV rows into dynamic objects:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">using CsvHelper;\r\nusing System.Globalization;\r\nusing <span class=\"hljs-keyword\">static<\/span> System.Console;\r\n\r\n\r\nusing <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(<span class=\"hljs-string\">\"data.csv\"<\/span>);\r\nusing <span class=\"hljs-keyword\">var<\/span> csv = <span class=\"hljs-keyword\">new<\/span> CsvReader(reader, CultureInfo.InvariantCulture);\r\n\r\n<span class=\"hljs-comment\">\/\/ read CSV file<\/span>\r\n<span class=\"hljs-keyword\">var<\/span> records = csv.GetRecords&lt;dynamic&gt;();\r\n\r\n\r\n<span class=\"hljs-comment\">\/\/ output<\/span>\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> r in records)\n{\n    WriteLine($<span class=\"hljs-string\">\"{r.FirstName,-15}{r.LastName,-10}{r.JoinedDate,15}{r.Salary,15}{r.Active,5}\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">John           Smith            2\/1\/2023     245,941.00  Yes\r\nSarah          Johnson          3\/1\/2023     208,902.00  Yes\r\nMichael        Brown            3\/1\/2023     215,970.00  Yes\r\nEmily          Davis            2\/1\/2023     239,648.00  Yes\r\nDavid          Wilson           3\/1\/2023     190,999.00  Yes\r\nJennifer       Martinez         2\/1\/2023     132,277.00  Yes\r\nRobert         Garcia           2\/1\/2023     157,395.00  Yes\r\nJessica        Lee              2\/1\/2023     210,666.00  Yes\r\nChristopher    Rodriguez        2\/1\/2023      83,272.00  Yes\r\nAmanda         Taylor           2\/1\/2023     143,537.00  Yes<\/code><\/span><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, create a <code>StreamReader<\/code> object to read the contents of the CSV file data:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">using <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(<span class=\"hljs-string\">\"data.csv\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>using<\/code> statement ensures that the <code>StreamReader<\/code> object is disposed properly.<\/p>\n\n\n\n<p>Second, create a new <code>CsvHelper<\/code> object with the <code>StreamReader<\/code> object and <code>CultureInfo.InvariantCulture<\/code>. The <code>CultureInfo.InvariantCulture<\/code> object specifies the culture settings for the CSV file.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">using <span class=\"hljs-keyword\">var<\/span> csv = <span class=\"hljs-keyword\">new<\/span> CsvReader(reader, CultureInfo.InvariantCulture);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, read the CSV file using the <code>GetRecords&lt;dynamic><\/code> method that returns an <code>IEnumerable&lt;dynamic><\/code>. Each object in the<code> IEnumerable&lt;dynamic><\/code> represents a row in the CSV file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">var records = csv.GetRecords<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dynamic<\/span>&gt;<\/span>();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Finally, write each row of the CSV file to the console using a <code><a href=\"https:\/\/csharptutorial.net\/csharp-tutorial\/csharp-foreach\/\">foreach<\/a><\/code> loop. Note that we use the <code>,-15<\/code>, <code>,-10<\/code>, <code>,15<\/code>, <code>,15<\/code>, and <code>,5<\/code> format specifiers to format the output with appropriate padding and alignment:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> r in records)\n{\n    WriteLine($<span class=\"hljs-string\">\"{r.FirstName,-15}{r.LastName,-10}{r.JoinedDate,15}{r.Salary,15}{r.Active,5}\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reading a CSV file into a collection of specific objects<\/h2>\n\n\n\n<p>The following read the <code>data.csv<\/code> file and convert each row to an <code>Employee<\/code> object:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">using CsvHelper;\r\nusing System.Globalization;\r\nusing <span class=\"hljs-keyword\">static<\/span> System.Console;\r\n\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span>\n<\/span>{\r\n    public string? FirstName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public string? LastName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public DateOnly? JoinedDate { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public decimal? Salary { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public string? Active { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n}\r\n\r\nclass Program\r\n{\r\n    <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> Main(string&#91;] args)\r\n    {\r\n        using <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(<span class=\"hljs-string\">\"data.csv\"<\/span>);\r\n        using <span class=\"hljs-keyword\">var<\/span> csv = <span class=\"hljs-keyword\">new<\/span> CsvReader(reader, CultureInfo.InvariantCulture);\r\n\r\n        <span class=\"hljs-comment\">\/\/ Read CSV file<\/span>\r\n        <span class=\"hljs-keyword\">var<\/span> employees = csv.GetRecords&lt;Employee&gt;();\r\n\r\n\r\n        <span class=\"hljs-comment\">\/\/ Output<\/span>\r\n        foreach (<span class=\"hljs-keyword\">var<\/span> e <span class=\"hljs-keyword\">in<\/span> employees)\r\n        {\r\n            WriteLine($<span class=\"hljs-string\">\"{e.FirstName,-15}{e.LastName,-10}{e.JoinedDate,15}{e.Salary,15}{e.Active,5}\"<\/span>);\r\n        }\n    }\r\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, define the <code>Employee<\/code> class with the <code>FirstName<\/code>, <code>LastName<\/code>, <code>JoinedDate<\/code>, <code>Salary<\/code>, and <code>Active<\/code> fields. Each field is corresponding to a column in the <code>data.csv<\/code> file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span>\n<\/span>{\r\n    public string? FirstName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public string? LastName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public DateOnly? JoinedDate { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public Decimal? Salary { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public String? Active { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, read the <code>data.csv<\/code> file and map each row to an <code>Employee<\/code> object in the <code>Main()<\/code> method of the <code>Program<\/code> class:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Program<\/span>\r\n<\/span>{\r\n    <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> Main(string&#91;] args)\r\n    {\r\n        using <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(<span class=\"hljs-string\">\"data.csv\"<\/span>);\r\n        using <span class=\"hljs-keyword\">var<\/span> csv = <span class=\"hljs-keyword\">new<\/span> CsvReader(reader, CultureInfo.InvariantCulture);\r\n\r\n        <span class=\"hljs-comment\">\/\/ Read CSV file<\/span>\r\n        <span class=\"hljs-keyword\">var<\/span> employees = csv.GetRecords&lt;Employee&gt;();\r\n\r\n\r\n        <span class=\"hljs-comment\">\/\/ Output<\/span>\r\n        foreach (<span class=\"hljs-keyword\">var<\/span> e <span class=\"hljs-keyword\">in<\/span> employees)\r\n        {\r\n            WriteLine($<span class=\"hljs-string\">\"{e.FirstName,-15}{e.LastName,-10}{e.JoinedDate,15}{e.Salary,15}{e.Active,5}\"<\/span>);\r\n        }\n    }\r\n}\r\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this program, we pass the <code>Employee<\/code> class to the <code>GetRecords&lt;Employee><\/code> instead of <code>dynamic<\/code>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reading a CSV file without a header<\/h2>\n\n\n\n<p>If you delete the header of the <code>data.csv<\/code> file and execute the above program, you&#8217;ll get an exception. To avoid the error, you need to create a <code>CsvConfiguration<\/code> object and pass it to the <code>CsvHelper<\/code> class:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">using CsvHelper;\r\nusing CsvHelper.Configuration;\r\nusing System.Globalization;\r\nusing <span class=\"hljs-keyword\">static<\/span> System.Console;\r\n\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span>\n<\/span>{\r\n    public string? FirstName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public string? LastName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public DateOnly? JoinedDate { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public Decimal? Salary { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public String? Active { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n}\r\n\r\nclass Program\r\n{\r\n    <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> Main(string&#91;] args)\r\n    {\r\n        using <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(<span class=\"hljs-string\">\"data.csv\"<\/span>);\r\n\r\n        <span class=\"hljs-keyword\">var<\/span> csvConfig = <span class=\"hljs-keyword\">new<\/span> CsvConfiguration(CultureInfo.InvariantCulture)\r\n        {\r\n            HasHeaderRecord = <span class=\"hljs-literal\">false<\/span>\r\n        };\r\n\r\n        using <span class=\"hljs-keyword\">var<\/span> csv = <span class=\"hljs-keyword\">new<\/span> CsvReader(reader, csvConfig);\r\n\r\n        <span class=\"hljs-comment\">\/\/ Read CSV file<\/span>\r\n        <span class=\"hljs-keyword\">var<\/span> employees = csv.GetRecords&lt;Employee&gt;();\r\n\r\r\n        <span class=\"hljs-comment\">\/\/ Output<\/span>\r\n        foreach (<span class=\"hljs-keyword\">var<\/span> e <span class=\"hljs-keyword\">in<\/span> employees)\r\n        {\r\n            WriteLine($<span class=\"hljs-string\">\"{e.FirstName,-15}{e.LastName,-10}{e.JoinedDate,15}{e.Salary,15}{e.Active,5}\"<\/span>);\r\n        }\n    }\r\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reading a CSV file with spaces in the header<\/h2>\n\n\n\n<p>If the header in the CSV file has spaces for example <code>First Name<\/code> instead of <code>FirstName<\/code>, you need to preprocess it before reading the file.<\/p>\n\n\n\n<p>To do that you can use <code>PrepareHeaderForMatch<\/code> option of the <code>CsvConfiguration<\/code> object. For example, you can remove the spaces like the following example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">using CsvHelper;\r\nusing CsvHelper.Configuration;\r\nusing System.Globalization;\r\nusing <span class=\"hljs-keyword\">static<\/span> System.Console;\r\n\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Employee<\/span>\r\n<\/span>{\r\n    public string? FirstName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public string? LastName { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public DateOnly? JoinedDate { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public decimal? Salary { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n    public string? Active { <span class=\"hljs-keyword\">get<\/span>; <span class=\"hljs-keyword\">set<\/span>; }\r\n}\r\n\r\nclass Program\r\n{\r\n    <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> Main(string&#91;] args)\r\n    {\r\n        using <span class=\"hljs-keyword\">var<\/span> reader = <span class=\"hljs-keyword\">new<\/span> StreamReader(<span class=\"hljs-string\">\"data.csv\"<\/span>);\r\n\r\n        <span class=\"hljs-keyword\">var<\/span> csvConfig = <span class=\"hljs-keyword\">new<\/span> CsvConfiguration(CultureInfo.InvariantCulture)\r\n        {\r\n            PrepareHeaderForMatch = <span class=\"hljs-function\"><span class=\"hljs-params\">args<\/span> =&gt;<\/span> args.Header.Replace(<span class=\"hljs-string\">\" \"<\/span>, string.Empty)\r\n        };\r\n\r\n        using <span class=\"hljs-keyword\">var<\/span> csv = <span class=\"hljs-keyword\">new<\/span> CsvReader(reader, csvConfig);\r\n\r\n        <span class=\"hljs-comment\">\/\/ Read CSV file<\/span>\r\n        <span class=\"hljs-keyword\">var<\/span> employees = csv.GetRecords&lt;Employee&gt;();\r\n\r\n        <span class=\"hljs-comment\">\/\/ Output<\/span>\r\n        foreach (<span class=\"hljs-keyword\">var<\/span> e <span class=\"hljs-keyword\">in<\/span> employees)\r\n        {\r\n            WriteLine($<span class=\"hljs-string\">\"{e.FirstName,-15}{e.LastName,-10}{e.JoinedDate,15}{e.Salary,15}{e.Active,5}\"<\/span>);\r\n        }\n    }\r\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this program, we set the <code>PrepareHeaderForMatch<\/code> option in the <code>CsvConfiguration<\/code> object. We assign a <a href=\"https:\/\/csharptutorial.net\/csharp-tutorial\/csharp-lambda-expression\/\">lambda expression<\/a> to the <code>PrepareHeaderForMatch<\/code> property. <\/p>\n\n\n\n<p>The lambda expression accepts a <code>PrepareHeaderForMatchArgs<\/code> object and replaces the spaces in the CSV header.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">var<\/span> csvConfig = <span class=\"hljs-keyword\">new<\/span> CsvConfiguration(CultureInfo.InvariantCulture)\r\n{\r\n    PrepareHeaderForMatch = <span class=\"hljs-function\"><span class=\"hljs-params\">args<\/span> =&gt;<\/span> args.Header.Replace(<span class=\"hljs-string\">\" \"<\/span>, string.Empty)\r\n};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the CsvHelper package to read CSV files.<\/li>\n\n\n\n<li>Use the <code>CsvConfiguration<\/code> object to customize the way the CsvHelper parses the CSV files.<\/li>\n<\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"1272\"\n\t\t\t\tdata-post-url=\"https:\/\/www.csharptutorial.net\/csharp-file\/csharp-read-csv-file\/\"\n\t\t\t\tdata-post-title=\"C# Read CSV File\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"1272\"\n\t\t\t\tdata-post-url=\"https:\/\/www.csharptutorial.net\/csharp-file\/csharp-read-csv-file\/\"\n\t\t\t\tdata-post-title=\"C# Read CSV File\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you&#8217;ll learn how to use read CSV files in C# using the CsvHelper package.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1182,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1272","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/comments?post=1272"}],"version-history":[{"count":2,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1272\/revisions"}],"predecessor-version":[{"id":1278,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1272\/revisions\/1278"}],"up":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1182"}],"wp:attachment":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/media?parent=1272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}