cascade 10 Geschrieben 13. September 2017 Melden Teilen Geschrieben 13. September 2017 Hallo, ich importiere aktuell Inhalte aus CSV-Dateien mit beliebigem Inhalt und beliebig vielen Spalten in ein Word-Dokument. Das klappt soweit gut, aber ich möchte nicht, dass die Spaltennamen alphabetisch sortiert werden sondern so erscheinen, wie sie in der CSV-Datei angeordnet sind. Die Spaltennamen kenne ich zur Laufzeit des Scriptes nicht. Kann da jemand helfen? Hier der Codeabschnitt: $path = $GlobalPathCsv + $name + ".csv" $defs = Import-CSV $path -Delimiter ';' $row = $defs.Count $col = ($defs | Get-Member -type NoteProperty).count # Tabelle erzeugen if($rw -eq 0) {$rw=1} $Table = $Selection.Tables.add($Selection.Range,$row+1,$col) # Style der Tabelle festlegen $Table.Style = "Einfache Tabelle 1" $sel = $Table.Range $sel.Style = "Standard" ## Überschriften ausschneiden und in Tabelle eintragen $colheads = ($defs | get-member -type NoteProperty) $i = 1 ForEach($colhead in $colheads) { $Table.Cell(1,$i).Range.text = $colhead.Name $i++ } ## Inhalte der Spalten/Zeilen auslesen und eintragen $i = 0 $j = 0 ForEach($def In $defs) { for ($j=0; $j -le $colheads.Count-1; $j++) { $Table.Cell($i+2,$j+1).Range.text = $defs[$i].($colheads[$j].Name) } $i++ } Das hier ist die Zeile, in der die Spaltennamen ausgelesen werden. Hier liegt sicher der Hase im Pfeffer: $colheads = ($defs | get-member -type NoteProperty) Vielen Dank schon mal! Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 13. September 2017 Melden Teilen Geschrieben 13. September 2017 Wenn ich mir https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/import-csv?view=powershell-5.1 anschaue, liegt das daran, daß get-member die Member automatisch zuerst nach Member Type sortiert und dann nach Member Name. Das mußt Du anders lösen... Könnte z.B. so gehen: $colheads = $defs.(NameDerNoteproperty) (Hab grad kein CSV zum Importieren da...) Zitieren Link zu diesem Kommentar
Beste Lösung cascade 10 Geschrieben 14. September 2017 Autor Beste Lösung Melden Teilen Geschrieben 14. September 2017 Vielen Dank für Deine Antwort. So ähnlich habe ich es jetzt lösen können. Die vollständige Lösung steht hier: https://stackoverflow.com/questions/27361418/how-to-get-powershell-object-properties-in-the-same-order-that-format-list-does So sieht der Abschnitt im Code jetzt aus (die nicht gewollte Lösung mit alphabetischer Sortierung ist auskommentiert). #$colheads = ($defs | get-member -type NoteProperty) $colheads = $defs[0].psobject.Properties | select name Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.