Example #1
0
 internal static DataTable ReadCsvToDataTable(Stream stream, FieldMapper mapper)
 {
     using (var textReader = new StreamReader(stream))
     {
         return ReadCore(textReader, mapper);
     }
 }
Example #2
0
 internal static DataTable ReadCsvToDataTable(FileInfo file, FieldMapper mapper)
 {
     using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
     {
         using (var textReader = new StreamReader(fs))
         {
             return ReadCore(textReader, mapper);
         }
     }
 }
Example #3
0
        private static DataTable ReadCore(StreamReader textReader, FieldMapper mapper)
        {
            var datatable = new DataTable();
            var csvConfig = new CsvConfiguration { Delimiter = ",", TrimHeaders = true, TrimFields = true };
            var csv = new CsvReader(textReader, csvConfig);
            var isHeaderRead = false;
            var hasRecord = true;
            while (hasRecord)
            {
                hasRecord = csv.Read();
                if (!isHeaderRead)
                {
                    datatable.Columns.Add(Resources.SelectColumnName, typeof(bool));
                    foreach (var column in csv.FieldHeaders)
                    {
                        datatable.Columns.Add(mapper.Map(column));
                    }

                    isHeaderRead = true;
                }

                if (hasRecord)
                {
                    var row = datatable.NewRow();
                    row[Resources.SelectColumnName] = false;
                    foreach (var columnName in csv.FieldHeaders)
                    {
                        var value = csv.GetField(columnName);
                        row[mapper.Map(columnName)] = value;
                    }

                    datatable.Rows.Add(row);
                }
            }

            return datatable;
        }