A DotNet Raider

My adventures in the .NET world!
posts - 49, comments - 12, trackbacks - 0

My Links

News

Website View Martino Bordin's profile on LinkedIn

Archives

Post Categories

Parsing di file CSV

Molte volte capita di dover effettuare il parsing di file CSV.

L’implementazione può diventare complessa a piacere (basti pensare all’escape dei caratteri, personalizzazione dei delimitatori, etc) e per questo esistono già librerie che ci permettono di effettuare questa operazione facilmente.

Non tutti sanno (ecco il perchè di questo post) che il framework .NET fornisce già questa funzionalità .

La classe in questione è TextFieldParser, contenuto nell’assembly Microsoft.VisualBasic.

using (TextFieldParser parser = new TextFieldParser(@"C:\temp\sample.csv"))
            {
                parser.CommentTokens = new[] { "#" };
                parser.SetDelimiters(";");
                parser.HasFieldsEnclosedInQuotes = true;

                // Skip over header line.
                //parser.ReadLine();

                while (!parser.EndOfData)
                {
                    string[] fields = parser.ReadFields();
                    if (fields != null)
                    {
                        var specificCulture = System.Globalization.CultureInfo.CreateSpecificCulture("it-IT");
                        var foo = new 
                        {
                            Field1 = fields[0],
                            Field2 = int.Parse(fields[1], specificCulture),
                            Field3 = double.Parse(fields[1], specificCulture),
                            Field4 = DateTime.Parse(fields[1], specificCulture),
                        };
                    }
                }
            }

Print | posted on giovedì 22 ottobre 2015 18:51 |

Feedback

Gravatar

# re: Parsing di file CSV

Personalmente sviluppo in C# e non mi piace dover includere la libreria di Visual Basic solo per questo motivo.
Da Nuget ci sono tanti pacchetti che fanno la stessa cosa come CsvHelper.
26/10/2015 14:18 | Emanuele
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET