У меня есть лист посещаемости в странном формате CSV от команд Microsoft, который мне нужно сохранить в базе данных. Я загружаю файл csv (сверху) и хочу проанализировать данные. Лист посещаемости

Меня просто интересует электронная почта и время присоединения.

Это то, что я пробовал до сих пор -

                    var path = Path.Combine(filePath, e.File.GetName());
                    var csvRows = System.IO.File.ReadAllLines(path, Encoding.Default).ToList();
                    List<Foo> lst = new List<Foo>();
                    foreach (var row in csvRows.Skip(7))
                    {
                      Foo foo = new Foo();
                      var columns = row.Split(';');
                       foo.JoinTime= columns[0];
                       foo.Email = columns[1];
                       lst.Add(foo);
                    }

Я знаю, что близок, но хотел изучить лучший подход и получить данные в правильном формате.

0
learner999 24 Мар 2021 в 17:07

1 ответ

Лучший ответ

С помощью Cinchoo ETL вы можете проанализировать свой csv, как показано ниже.

PS. Этот подход работает, только если в файле CSV есть фиксированное количество строк, которые следует игнорировать.

foreach (var rec in new ChoCSVReader("**** YOUR CSV FILE PATH ***")
    .HeaderLineAt(7)
    .WithDelimiter(";")
    .ConfigureHeader(h => h.HasHeaderRecord = true)
    )
{
    Console.WriteLine(rec["Full Name"]);
    Console.WriteLine(rec["Join Time"]);
}

ОБНОВЛЕНИЕ: Вот рабочий образец, основанный на образце CSV, представленном ниже.

В предоставленном вами образце CSV используется разделитель табуляции.

            string csv = @"Meeting Summary
Total Number of Participants    4 
Meeting Title   Test 
Meeting Start Time  3/11/2021, 12:57:48 PM 
Meeting End Time    3/11/2021, 1:28:13 PM 

Full Name   Join Time   Leave Time  Duration    Email   Role 
Smith, John.    3/11/2021, 12:57:48 PM  3/11/2021, 1:28:08 PM   30m 20s TEST39@test.com Presenter 
Marshall, Micah D.  3/11/2021, 12:59:11 PM  3/11/2021, 1:28:07 PM   28m 56s TEST18@test.com Presenter 
Hugh, Grant V.  3/11/2021, 1:00:08 PM   3/11/2021, 1:28:13 PM   28m 5s  TEST5@test.com  Organizer 
Cole, Brad R.   3/11/2021, 1:27:03 PM 3/11/2021, 1:28:07 PM 1m 4s   TEST4@test.COM  Presenter";

            try
            {
                foreach (var rec in ChoCSVReader.LoadText(csv)
                    .HeaderLineAt(7)
                    .WithDelimiter("\t")
                    .ConfigureHeader(h => h.HasHeaderRecord = true)
                    )
                {
                    Console.WriteLine(rec["Full Name"]);
                    Console.WriteLine(rec["Join Time"]);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
1
Cinchoo 24 Мар 2021 в 23:53