none
Powershell, Array in Excel

    Frage

  • Hallo, ich schreibe gerade ein Skript, wo ich eine Textdatei in Powershell alphabetisch sortieren lasse, diese möchte ich dann in eine Exceltabelle exportieren. Nur leider habe ich keinen Plan wie ich dieses anstelle....

    bitte um Hilfe, danke :)

    $Jungenliste10a = get-content C:\Users\AZKCI\Desktop/Jungenliste10a.txt        #Bekommt die Infos der Textdatei
    $Jungenlistearray = $Jungenliste10a.split("`n")                              #Die Liste/Array wird gesplittet nach jedem Absatz
    #$Jungenliste10a = $Jungenliste10a.split(",")                                
                      
    for ($i=0; $i -le $Jungenlistearray.Length-1; $i++)                            #Schleife (for) und Liste wird erstellt
    {
       $Wortarray = $Jungenlistearray[$i].split(",")                             #Die Liste/Array wird nach jedem Komma gesplittet  
       
       $Nachname = $Wortarray[1]                                                  #Nachname ist an zweiter Stelle
       $Wortarray[1] = $Wortarray[0]                                              #Nachname kommt an erste Stelle
       $Wortarray[0] = $Nachname                                                  #wird bestätigt, dass Nachname an erster Stelle (0) ist                                                 
       $Jungenlistearray[$i] = $Wortarray[0] + "," + $Wortarray[1]                #$Jungenlistearray[$i] = erste Stelle Nachname, Vorname
       
    }
    
                                                                  
    $Jungenlistearray | Sort-Object |                                               #wird alphabetisch sortiert 
    
    
    
    Set-StrictMode -Version "2.0"
    Clear-Host
    $ExcelApp = New-Object -ComObject Excel.Application        #Excel wird gestartet
    $ExcelApp.Visible = $True
    
    $Workbook = $ExcelApp.Workbooks.Add()                       #Workbook wird geaddet
    

    Donnerstag, 7. Dezember 2017 09:56

Antworten

  • Es sieht danach aus, als wären Deine Daten im CSV-Format gespeichert - kann das sein? DAnn wäre Import-CSV die bessere Alternative zum Einlesen. Dann kannst Du auch einfach mit einem Sort-Object und der Angabe der gewünschten Property sortieren. Danach würde ich empfehlen, die Daten einfach wieder als CSV zu exportieren. Wenn Du das mit dem Semikolon als Trennzeichen machst, kann ein Deutsches Excel prima damit umgehen. 

    Also ungefähr so hier ...

    Import-CSV -Path 'C:\Users\AZKCI\Desktop\Jungenliste10a.CSV' -Delimiter ',' | 
        Sort-Object -Property Nachname | 
            Export-Csv -Path 'C:\Users\AZKCI\Desktop\Jungenliste10a-sortiert.CSV' -Delimiter ';' -NoTypeInformation


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    Donnerstag, 7. Dezember 2017 10:48
  • Du musst direkt das mehrspaltige Array  erstellen, beim Sort gibst du die Spalte an und kannst dann per Excel-Range-Objekt das Array zuweisen:

    $Workbook.Range("$A1:$B" + $Zeilen) = $Array

    sollte Funktionieren.
    für A und B kannst du je nach Anzahl Spalten natürlich auch alles andere angeben.
    Den Save dann allerdings nicht vergessen.

    http://www.mcseboard.de/topic/188829-powershell-array-sortieren/


    Donnerstag, 7. Dezember 2017 12:38

Alle Antworten

  • Es sieht danach aus, als wären Deine Daten im CSV-Format gespeichert - kann das sein? DAnn wäre Import-CSV die bessere Alternative zum Einlesen. Dann kannst Du auch einfach mit einem Sort-Object und der Angabe der gewünschten Property sortieren. Danach würde ich empfehlen, die Daten einfach wieder als CSV zu exportieren. Wenn Du das mit dem Semikolon als Trennzeichen machst, kann ein Deutsches Excel prima damit umgehen. 

    Also ungefähr so hier ...

    Import-CSV -Path 'C:\Users\AZKCI\Desktop\Jungenliste10a.CSV' -Delimiter ',' | 
        Sort-Object -Property Nachname | 
            Export-Csv -Path 'C:\Users\AZKCI\Desktop\Jungenliste10a-sortiert.CSV' -Delimiter ';' -NoTypeInformation


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    Donnerstag, 7. Dezember 2017 10:48
  • Du musst direkt das mehrspaltige Array  erstellen, beim Sort gibst du die Spalte an und kannst dann per Excel-Range-Objekt das Array zuweisen:

    $Workbook.Range("$A1:$B" + $Zeilen) = $Array

    sollte Funktionieren.
    für A und B kannst du je nach Anzahl Spalten natürlich auch alles andere angeben.
    Den Save dann allerdings nicht vergessen.

    http://www.mcseboard.de/topic/188829-powershell-array-sortieren/


    Donnerstag, 7. Dezember 2017 12:38