CsvHelper.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Data;
  3. using System.IO;
  4. namespace Quadarax.Foundation.Common.Data
  5. {
  6. public static class CsvHelper
  7. {
  8. /// <summary>
  9. /// Read CSV file and creates <see cref="DataTable"/> with filled content.
  10. /// <remarks>
  11. /// This method expects first header row.
  12. /// </remarks>
  13. /// </summary>
  14. /// <param name="csvFile">(*.csv) full file name.</param>
  15. /// <param name="delimiter">Delimiter character</param>
  16. /// <returns>New created DataTable with content.</returns>
  17. public static DataTable CsvToDataTable(string csvFile, string delimiter)
  18. {
  19. var dt = new DataTable();
  20. using (var sr = new StreamReader(csvFile))
  21. {
  22. var headers = sr.ReadLine().Split(new string[] { delimiter }, StringSplitOptions.RemoveEmptyEntries);
  23. foreach (var header in headers)
  24. {
  25. dt.Columns.Add(header);
  26. }
  27. while (!sr.EndOfStream)
  28. {
  29. var rows = sr.ReadLine().Split(new[] { delimiter }, StringSplitOptions.None);
  30. var dr = dt.NewRow();
  31. for (var i = 0; i < headers.Length; i++)
  32. {
  33. dr[i] = rows[i];
  34. }
  35. dt.Rows.Add(dr);
  36. }
  37. }
  38. return dt;
  39. }
  40. }
  41. }