none
Formatierung einer eingelesenen .csv Datei RRS feed

  • Frage

  • Guten Tag,

    ich bin langsam am verzeifeln. Ich lese eine .csv Datei ein und versuche die zu bearbeiten/formatieren und wieder auszugeben damit ich damit weiter arbeiten kann. Jedoch leider ohne erfolg.

    Ablauf: Die Datei wird eingelesen. Es gibt mehrere Team´s zu ein und dem selben Assignee. Ich möchte nun alle Teams ausgeben indem der 1 Assignee drinnen ist.

    Test.csv ist meine .csv die ich einlese (so wird diese exportiert)
    Aus dieser csv benötige ich nur das Team und den Assignee.

    test.ps1 : Die csv Datei wird hier importiert, und so bearbeitet, das am Ende die Formatierung dabei raus kommen soll:

    Vorname;Nachname;(Team1/;Team2/;Team3/;Team4/;xxx),

    xxx = je nachdem in wievielen Teams der User ist

    Das bräuchte ich am besten in einer Variable, sodass ich damit weiter arbeiten kann.
    Anbei noch die Dateien die ich bis jetzt habe.

    Ich hoffe es kann mir jemand helfen. Für fragen bin ich jederzeit da.
    Danke!

    Dienstag, 27. Januar 2015 14:10

Antworten

Alle Antworten

  • test.csv

    Überschrift 1;Team;Überschrift 3;Assignee;Überschrift 5;Überschrift 6;Überschrift 7;Überschrift 8;Überschrift 9
    ;Team 1;;Vorname Nachname 1;;;;;
    ;Team 2;;Vorname Nachname 2;;;;;
    ;Team 3;;Vorname Nachname 3;;;;;
    ;Team 4;;Vorname Nachname 4;;;;;
    ;Team 5;;Vorname Nachname 5;;;;;
    ;Team 6;;Vorname Nachname 6;;;;;
    ;Team 5;;Vorname Nachname 1;;;;;
    ;Team 6;;Vorname Nachname 2;;;;;
    ;Team 5;;Vorname Nachname 3;;;;;
    ;Team 3;;Vorname Nachname 4;;;;;
    ;Team 6;;Vorname Nachname 5;;;;;
    ;Team 3;;Vorname Nachname 6;;;;;
    ;Team 5;;Vorname Nachname 1;;;;;
    ;Team 6;;Vorname Nachname 2;;;;;
    ;Team 3;;Vorname Nachname 3;;;;;
    ;Team 6;;Vorname Nachname 4;;;;;
    ;Team 5;;Vorname Nachname 5;;;;;
    ;Team 2;;Vorname Nachname 6;;;;;

    test.ps1

         # Wenn Array 1 gleich array 2 ist dann ersetze den namen und dann vergleiche array 2 mit 3 etc...


    $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False) #Encoding, damit die Umlaute angezeigt werden
    $OUTPUT = @() #Variable auf Leer setzten
    $Path = ".\blsa.csv" #Speicherpfad definieren

        $FrontrangeData = Import-CSV ($PSScriptRoot+"\test.csv") –Delimiter ';' | Select Assignee, Team | Sort-Object Assignee
        $count = $FrontrangeData.count


        for($i=0;$i -lt $count;$i++){
            
            if($FrontrangeData[$i].Assignee -eq $FrontrangeData[$i+1].Assignee) {
                $dasda += ($FrontrangeData[$i].Team)
            }else {
                $OUTPUT += ($FrontrangeData[$i])
            }
        }  
        
    ##############################################################################################################
    # Gesammelte Daten werden in die Datei geschrieben
    ##############################################################################################################
    [System.IO.File]::WriteAllLines($Path , $OUTPUT, $Utf8NoBomEncoding)
    ##############################################################################################################
    # Warten bis alle Prozesse beendet sind (Clean up)
    ##############################################################################################################
    [gc]::collect()  
    [gc]::WaitForPendingFinalizers()  

    Dienstag, 27. Januar 2015 14:13
  • Hallo Marcel!

    Etwa so ?:

    $Objekte = @'
    Überschrift 1;Team;Überschrift 3;Assignee;Überschrift 5;Überschrift 6;Überschrift 7;Überschrift 8;Überschrift 9
    ;Team 1;;Vorname Nachname 1;;;;;
    ;Team 2;;Vorname Nachname 2;;;;;
    ;Team 3;;Vorname Nachname 3;;;;;
    ;Team 4;;Vorname Nachname 4;;;;;
    ;Team 5;;Vorname Nachname 5;;;;;
    ;Team 6;;Vorname Nachname 6;;;;;
    ;Team 5;;Vorname Nachname 1;;;;;
    ;Team 6;;Vorname Nachname 2;;;;;
    ;Team 5;;Vorname Nachname 3;;;;;
    ;Team 3;;Vorname Nachname 4;;;;;
    ;Team 6;;Vorname Nachname 5;;;;;
    ;Team 3;;Vorname Nachname 6;;;;;
    ;Team 5;;Vorname Nachname 1;;;;;
    ;Team 6;;Vorname Nachname 2;;;;;
    ;Team 3;;Vorname Nachname 3;;;;;
    ;Team 6;;Vorname Nachname 4;;;;;
    ;Team 5;;Vorname Nachname 5;;;;;
    ;Team 2;;Vorname Nachname 6;;;;;
    '@ | ConvertFrom-Csv -Delimiter ';'
    
    $Objekte | Group-Object -Property Assignee | ForEach-Object {
      New-Object -TypeName PsObject -Property @{
        Name = $_.Name
        Team = $_.Group | Select-Object -ExpandProperty Team
      }
    }


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Dienstag, 27. Januar 2015 15:48
  • Freitag, 30. Januar 2015 12:52
  • Ausnahmsweise Peter.

    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Samstag, 31. Januar 2015 12:43
    Moderator