- ติดตั้ง CsvHelper ผ่าน NuGet
- เขียนไฟล์ CSV
- อ่านไฟล์ CSV
CsvHelper เวอร์ชัน Version 19.0.0 ดู Console ใช้ CsvHelper
1.ติดตั้ง CsvHelper ผ่าน NuGet
PM> Install-Package CsvHelper -Version 27.2.1
> dotnet add package CsvHelper --version 27.2.1
2.เขียนไฟล์ CSV
using CsvHelper; using CsvHelper.Configuration; using System.Globalization; using System.Reflection; using System.Xml; namespace ConsoleApp1; class Program { public static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); static void Main() { XmlDocument log4netConfig = new XmlDocument(); log4netConfig.Load(File.OpenRead("log4net.config")); var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy)); log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]); try { log.Info("*********************************"); log.Info("************* BEGIN *************"); log.Info(AppDomain.CurrentDomain.FriendlyName); var records = new List<Foo> { new Foo { Id = 1, Name = "one" }, new Foo { Id = 2, Name = "two" }, }; records.Add(new Foo { Id = 3, Name = "three" }); Foo foo = new Foo(); foo.Id = 4; foo.Name = "four"; records.Add(foo); var config = new CsvConfiguration(CultureInfo.CurrentCulture) { Delimiter = "|" }; using (var writer = new StreamWriter(string.Format("{0}/file.csv", AppDomain.CurrentDomain.BaseDirectory))) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(records); } log.Info("************** END **************"); log.Info(""); } catch (Exception ex) { log.Error(ex.Message); log.Error(ex.ToString()); } } } public class Foo { public int Id { get; set; } public string Name { get; set; } }
บรรทัดที่ 35 กำหนด delimiter เป็น Pipe (ค่า default จะเป็น comma)
ตัวอย่างไฟล์ที่ได้
Id,Name 1,one 2,two 3,three 4,four
3.อ่านไฟล์ CSV
using CsvHelper; using System; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Xml; namespace ConsoleApp1; class Program { public static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); static void Main() { XmlDocument log4netConfig = new XmlDocument(); log4netConfig.Load(File.OpenRead("log4net.config")); var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy)); log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]); try { string filename = string.Format("{0}file.csv", AppDomain.CurrentDomain.BaseDirectory); log.Info(string.Format("filename = '{0}'", filename)); var config = new CsvConfiguration(CultureInfo.CurrentCulture) { Delimiter = "|" }; using (var reader = new StreamReader(filename)) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { var records = csv.GetRecords<Foo>(); var foo = records.ToList(); int count = foo.Count(); log.Info(string.Format("count = '{0}' ", count)); for (int r = 0; r < count; r++) { log.Info(string.Format("Id = '{0}', Name = '{1}'", foo[r].Id, foo[r].Name)); } } } catch (Exception ex) { log.Error(ex.Message); log.Error(ex.ToString()); } } } public class Foo { public int Id { get; set; } public string Name { get; set; } }
ตัวอย่าง output
count = '4' Id = '1', Name = 'one' Id = '2', Name = 'two' Id = '3', Name = 'three' Id = '4', Name = 'four'