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
No comments:
Post a Comment