CsvHelper.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Data;
  3. using System.IO;
  4. namespace Quadarax.Foundation.Core.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. if (headers == null) return dt;
  24. foreach (var header in headers)
  25. {
  26. dt.Columns.Add(header);
  27. }
  28. while (sr is { EndOfStream: false })
  29. {
  30. var rows = sr?.ReadLine()?.Split(new[] { delimiter }, StringSplitOptions.None);
  31. if (rows == null) continue;
  32. var dr = dt.NewRow();
  33. for (var i = 0; i < headers.Length; i++)
  34. {
  35. dr[i] = rows[i];
  36. }
  37. dt.Rows.Add(dr);
  38. }
  39. }
  40. return dt;
  41. }
  42. }
  43. }