[C#] Plik CSV z wieloma kolumnami zamiast wierszami

Cześć

 

Przestaję wierzyć w programistów, za dużo mam styczności z niezrozumiałą dla mnie logiką. Mam plik CSV generowany przez maszynę. Nie mogę go w żaden sposób zmienić więc mogę go jedynie obrobić. Wygląda to tak. Kiedy chcę wygenerować dane dla jednego produktu to wygląda to tak:

 

ID    JakasWartosc1 InnaWartosc1 JeszczeInnaWartosc1 IDodatkowoJeszczeInna1

 

 

ale jak chcę wyrzucić dane dla np. 5 produktów to już domyślacie się co on robi? Zamiast zmienić ID i walić dane pod te same kolumny to dokleja 5 nowych kolumn obok dla każdego z produktów czyli plik csv ma 25 kolumn. A co jeśli mam do przejrzenia dane z całej produkcji gdzie tych produktów było 500 ? :wink: oczywiście mam 500*5 = 2500 kolumn. Oczywiście kolumny są identyczne. Nagłówki zmieniają się tylko tak że zamiast 1 jest kolejna liczba. I teraz chcę to przekształcić żeby wszystkie 2500 kolumn połączyć w 5 kolumn ale dane przenieść do wierszy. Wiem jak to zrobić na piechotę bawiąc się pętlami ale może ktoś już ma jakieś lepsze rozwiązanie.

 

 

 

 

Dodać na koncu znak konca linii?

Masz plik CSV w którym jest 2500 column i 1000 wierszy. Gdzie ja mam dodać znak końca linii żeby cokolwiek rozdzielić? Dodatkowo jest pewna trudność, plik wygląda tak:

 

ID1,WspolnaKolumna1, WspolnaKolumna2, Par1, Par1, Par1, Par1, ID2, Par2, Par2, Par2, Par2, ID3, Par3, Par3, Par3, Par3, ID4, Par4, Par4, Par4, Par4 … ID500, Par500, Par500, Par500, Par500

 

gdzie Par to parametr, każdy z 4 nazywa się inaczej ale ja uogólniłem.

Wykorzystaj wyrażenie regularne. Zamień ID[liczba] na newlineID[liczba] przykładowo tak:

using (StreamReader reader = new StreamReader("wejscie.txt"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
  
               line=Regex.Replace(line, "ID([0-9]+)", "\nID$1");
               Console.WriteLine(line);

            }
        }

Jeśli ID[liczba] pojawia się tylko na początku grupy, a nie jako parametr to powinno zadziałać.

ID1,WspolnaKolumna1, WspolnaKolumna2, Par1, Par1, Par1, Par1, 
ID2, Par2, Par2, Par2, Par2, 
ID3, Par3, Par3, Par3, Par3, 
ID4, Par4, Par4, Par4, Par4 , 
ID500, Par500, Par500, Par500, Par500

Napisałem już program, który mi to konwertuje. Nawet jeśli robi to na piechotę, czytając w pętli po kolei kolumny to działa to bardzo szybko więc nie będę się bawił w jakieś eleganckie rozwiązanie.

… a teraz ja zaczynam tracić wiarę w programistów. 

Nie mam zamiaru się spuszczać nad czymś co użyję raz i zapomnę. Plik skonwertowany do formy czytelnej i tyle.