Odczyt CSV - "," w czytanej komórce

0

Cześć wszystkim

Mam problem z odczytaniem pliku csv i załadowaniem danych do listy. Problem pojawia się jeśli w czytanej komórce znajduje sie przecinek, wówczas string[] rows = line.Split(','); traktuje go jako separator komórek i komórkę dzieli na dwie różne dane.

Ma ktoś pomysł jak to obejść ?

0

Użyć innego separatora komórek jak ';' i dzielić po tym znaku.

0

Pliki csv w takim formacie otrzymuję, i nie jest możliwa zmiana tegoż formatu.

0

A przypadkiem ta komórka nie ma " na początku i na końcu?

0

Tak, ma ale jak to sensownie połączyć z podzialem po "," ?

0

Użyj klasy z VB przykład:

using System;
using System.IO;
using Microsoft.VisualBasic.FileIO;

namespace ConsoleApplication1
{
   class Program
   {
      static void Main(string[] args)
      {

         string csv = "4p,p4,123,ACD,\"Q, Q, Q\",\"123,123\"";

         TextFieldParser parser = new TextFieldParser(new StringReader(csv));

         parser.HasFieldsEnclosedInQuotes = true;
         parser.SetDelimiters(",");

         string[] fields;

         while (!parser.EndOfData)
         {
            fields = parser.ReadFields();
            foreach (string field in fields)
            {
               Console.WriteLine(field);
            }
         }

         parser.Close();
      }
   }
}

Output:
''4p
p4
123
ACD
Q, Q, Q
123,123''

dodaj tylko referencje do Microsoft.VisualBasic.

3

Albo użyć klasy, która sama "umie" obsługiwać poprawnie pliki CSV. Bardzo polecam http://joshclose.github.io/CsvHelper/.

1 użytkowników online, w tym zalogowanych: 0, gości: 1