In my last project we had to retrieve a huge amount of data from an existing CSV-File. I found a nice, fast, little library on GitHub called CsvHelper.
The easiest approach is to create a target class for this if the columns of the CSV-File does not match to the properties of your default business object.
1: using System;
2: using System.Collections.Generic;
3: using System.IO;
4: using System.Linq;
5: using System.Text;
6:
7: using CsvHelper;
8:
9: namespace MK.CsvExample
10: { 11: class Program
12: { 13: static void Main(string[] args)
14: { 15: using (TextReader reader = File.OpenText(@"C:\tmp\Users.csv"))
16: { 17: var csv = new CsvReader(reader);
18: csv.Configuration.Delimiter = ";";
19:
20: var usersFromCsv = csv.GetRecords<User>();
21:
22: foreach (var user in usersFromCsv)
23: { 24: Console.WriteLine("{0} {1}, {2}, {3}, {4}", 25: user.Firstname,
26: user.Lastname,
27: user.Street,
28: user.City,
29: user.Country);
30: }
31: }
32: Console.ReadKey();
33: }
34: }
35:
36: /// <summary>
37: /// BusinessObject for getting CSV-Informations
38: /// Names needs to be the same as in the CSV-File
39: /// </summary>
40: public class User
41: { 42: public string Lastname { get; set; } 43: public string Firstname { get; set; } 44: public string Country { get; set; } 45: public string City { get; set; } 46: public string Street { get; set; } 47: }
48: }
For usage of CSV-Files created in Excel, you have to change de Delimiter to a semicolon (see line 18).
A NuGet package is also available: “PM> Install-Package CsvHelper”
cheers