Question
Exporter un tableau a plusieurs dimensions en CSV
- SP
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 7 mois #15641
par SP
Exporter un tableau a plusieurs dimensions en CSV a été créé par SP
Bonjour,
Je souhaiterai exporter un tableau a plusieurs dimensions stocké dans une variable ($tlConcatTab) vers un fichier CSV ($OutputFile).
J'ai vu la fonction Export-Csv mais je n'arrive pas l'utliser.
J'ai essayer :
[code:1]
$tlConcatTab | Export-Csv -Path $OutputFile
[/code:1]
[code:1]
Export-Csv -Path $OutputFile -InputObject $tlConcatTab[/code:1]
Les deux générent des résultats totalement improbable qui ne contient meme pas les données.
Auriez-vous une solution ?
Je souhaiterai exporter un tableau a plusieurs dimensions stocké dans une variable ($tlConcatTab) vers un fichier CSV ($OutputFile).
J'ai vu la fonction Export-Csv mais je n'arrive pas l'utliser.
J'ai essayer :
[code:1]
$tlConcatTab | Export-Csv -Path $OutputFile
[/code:1]
[code:1]
Export-Csv -Path $OutputFile -InputObject $tlConcatTab[/code:1]
Les deux générent des résultats totalement improbable qui ne contient meme pas les données.
Auriez-vous une solution ?
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 7 mois #15642
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Exporter un tableau a plusieurs dimensions en CSV
Bonjour,
Qu'y a t'il dans '$tlConcatTab' ou comment as tu généré son contenu ?
Quel est le format de '$tlConcatTab' ?
[code:1]
PS> $tlConcatTab
PS > $tlConcatTab | Get-member
[/code:1]
Sans cela... Comment t'aider ?
@ +
Matthew BETTON
Qu'y a t'il dans '$tlConcatTab' ou comment as tu généré son contenu ?
Quel est le format de '$tlConcatTab' ?
[code:1]
PS> $tlConcatTab
PS > $tlConcatTab | Get-member
[/code:1]
Sans cela... Comment t'aider ?
@ +
Matthew BETTON
Connexion ou Créer un compte pour participer à la conversation.
- SP
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 7 mois #15644
par SP
Réponse de SP sur le sujet Re:Exporter un tableau a plusieurs dimensions en CSV
Le contenu de $tlConcatTab
[code:1]Name Value
----
2 {192.168.40.23, 5500, SWE13, Tech Room...}
1 {192.168.40.22, 5500, SWE12, Tech Room...}
0 {Device, Model, Sysname, Syscontact...} [/code:1]
[code:1]Name Value
----
2 {192.168.40.23, 5500, SWE13, Tech Room...}
1 {192.168.40.22, 5500, SWE12, Tech Room...}
0 {Device, Model, Sysname, Syscontact...} [/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- SP
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 7 mois #15681
par SP
Réponse de SP sur le sujet Re:Exporter un tableau a plusieurs dimensions en CSV
J'ai pas trouvé comment utilisé la cmd export-csv.
Néanmoins j'ai fait autrement pour transformer mon tableau $global:tlConcatTab (System.Object.Hashtable) au format CSV $Export (System.Array.Object).
[code:1]$global:tlConcatTab[0] | ForEach-Object -process {
if ($TitleLine -eq $null) {$TitleLine = \"ID,$_\"} else {$TitleLine = \"$TitleLine,$_\"}
}
$Export = @(\"$titleLine\"«»)
$global:tlConcatTab.Keys | Sort-Object | Select-Object -Skip 1 | %{
$Export += (@($_) + $global:tlConcatTab.$_) -join \",\"
}
$Export | Out-File $OutputFile[/code:1]
Mes noms de colonne étant dans mon tableau, je fais un traitement avant avec $TitleLine (System.Object.String).
[code:1]$TitleLine
ID,Device,Model,Sysname,Syscontact[/code:1]
Je rajoute la colonne \"ID\" qui correspond a \"Name\" dans $global:tlConcatTab.
Néanmoins j'ai fait autrement pour transformer mon tableau $global:tlConcatTab (System.Object.Hashtable) au format CSV $Export (System.Array.Object).
[code:1]$global:tlConcatTab[0] | ForEach-Object -process {
if ($TitleLine -eq $null) {$TitleLine = \"ID,$_\"} else {$TitleLine = \"$TitleLine,$_\"}
}
$Export = @(\"$titleLine\"«»)
$global:tlConcatTab.Keys | Sort-Object | Select-Object -Skip 1 | %{
$Export += (@($_) + $global:tlConcatTab.$_) -join \",\"
}
$Export | Out-File $OutputFile[/code:1]
Mes noms de colonne étant dans mon tableau, je fais un traitement avant avec $TitleLine (System.Object.String).
[code:1]$TitleLine
ID,Device,Model,Sysname,Syscontact[/code:1]
Je rajoute la colonne \"ID\" qui correspond a \"Name\" dans $global:tlConcatTab.
Connexion ou Créer un compte pour participer à la conversation.
- SP
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 7 mois #15682
par SP
Réponse de SP sur le sujet Re:Exporter un tableau a plusieurs dimensions en CSV
J'ai pas trouvé comment utilisé la cmd export-csv.
Néanmoins j'ai fait autrement pour transformer mon tableau $global:tlConcatTab (System.Object.Hashtable) au format CSV $Export (System.Array.Object).
[code:1]$global:tlConcatTab[0] | ForEach-Object -process {
if ($TitleLine -eq $null) {$TitleLine = \"ID,$_\"} else {$TitleLine = \"$TitleLine,$_\"}
}
$Export = @(\"$titleLine\"«»)
$global:tlConcatTab.Keys | Sort-Object | Select-Object -Skip 1 | %{
$Export += (@($_) + $global:tlConcatTab.$_) -join \",\"
}
$Export | Out-File $OutputFile[/code:1]
Mes noms de colonne étant dans mon tableau, je fais un traitement avant avec $TitleLine (System.Object.String).
[code:1]$TitleLine
ID,Device,Model,Sysname,Syscontact[/code:1]
Je rajoute la colonne \"ID\" qui correspond a \"Name\" dans $global:tlConcatTab.
Néanmoins j'ai fait autrement pour transformer mon tableau $global:tlConcatTab (System.Object.Hashtable) au format CSV $Export (System.Array.Object).
[code:1]$global:tlConcatTab[0] | ForEach-Object -process {
if ($TitleLine -eq $null) {$TitleLine = \"ID,$_\"} else {$TitleLine = \"$TitleLine,$_\"}
}
$Export = @(\"$titleLine\"«»)
$global:tlConcatTab.Keys | Sort-Object | Select-Object -Skip 1 | %{
$Export += (@($_) + $global:tlConcatTab.$_) -join \",\"
}
$Export | Out-File $OutputFile[/code:1]
Mes noms de colonne étant dans mon tableau, je fais un traitement avant avec $TitleLine (System.Object.String).
[code:1]$TitleLine
ID,Device,Model,Sysname,Syscontact[/code:1]
Je rajoute la colonne \"ID\" qui correspond a \"Name\" dans $global:tlConcatTab.
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 7 mois #15691
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Exporter un tableau a plusieurs dimensions en CSV
sp973 écrit:
Si tu utilises Export-Csv sur ce type d'objet, tu obtiendras 2 colonnes nommées Name et Value.
A priori '$tlConcatTab' est une collection d'objet. Chaque objet dispose des propriétés 'Name' et 'Value'.
La propriété 'Value' contenant un tableau de valeurs, son export dans un fichier csv ne se fait pas simplement.
Mais cela reste envisageable
Un exemple :
[code:1]
$tab = @()
$tlConcatTab | Foreach-Object{
$Values = \"\"
Foreach($v in $_.Value){ $Values += \"$v`n\" }
$tab += New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values}
}
$tab | Export-Csv -Path $OutputFile
[/code:1]
Une autre écriture :
[code:1]
$tlConcatTab | Foreach-Object{
$Values = \"\"
Foreach($v in $_.Value){ $Values += \"$v`n\" }
New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values}
} | Export-Csv -Path $OutputFile
[/code:1]
ou bien encore, sur une seule ligne :
[code:1]
$tlConcatTab | Foreach-Object{ $Values = \"\" ; Foreach($v in $_.Value){ $Values += \"$v`n\" } ; New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values)} | Export-Csv -Path $OutputFile
[/code:1]
Dans cet exemple, je récupère chaque valeur du tableau représenté par la propriété Value. J'utilise le '`n' ('new line') comme séparateur.
Si j'ouvre le csv dans Excel, chaque cellule de la colonne 'Value' contient plusieurs lignes et sur chaque ligne on retrouve les valeurs du tableau contenu dans la propriété 'Value'.
Pour faire le test
[code:1]
$tlConcatTab = @()
$tlConcatTab += New-Object PSObject -Property @{Name = 2 ; Value = @('192.168.40.23', '5500', 'SWE13')}
$tlConcatTab += New-Object PSObject -Property @{Name = 1 ; Value = @('192.168.40.22', '5500', 'SWE12')}
$tlConcatTab += New-Object PSObject -Property @{Name = 0 ; Value = @('192.168.40.21', '5500', 'SWE11')}
$tlConcatTab |
Foreach-Object{ $Values = \"\" ; Foreach($v in $_.Value){ $Values += \"$v`n\" } ; New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values}} |
Select-Object Name, Value |
Export-Csv -Path D:\Test.csv -Delimiter \";\" -NoTypeInformation -Encoding UTF8
Invoke-Item D:\Test.csv
[/code:1]
Dans excel, se rendre sur chaque cellule et / ou penser à élargir les lignes pour observer que toutes les valeurs sont bien présentes.
Attention : Si le fichier csv est ouvert au notepad, on ne voit pas les retours chariot, mais ils sont là. Ils sont visibles dans d'autres éditeurs, comme par exemple Notepad++ ...
@ +
Matthew BETTON<br><br>Message édité par: Matthew BETTON, à: 22/08/13 13:50
Le contenu de $tlConcatTab
[code:1]Name Value
----
2 {192.168.40.23, 5500, SWE13, Tech Room...}
1 {192.168.40.22, 5500, SWE12, Tech Room...}
0 {Device, Model, Sysname, Syscontact...} [/code:1]
Si tu utilises Export-Csv sur ce type d'objet, tu obtiendras 2 colonnes nommées Name et Value.
A priori '$tlConcatTab' est une collection d'objet. Chaque objet dispose des propriétés 'Name' et 'Value'.
La propriété 'Value' contenant un tableau de valeurs, son export dans un fichier csv ne se fait pas simplement.
Mais cela reste envisageable
Un exemple :
[code:1]
$tab = @()
$tlConcatTab | Foreach-Object{
$Values = \"\"
Foreach($v in $_.Value){ $Values += \"$v`n\" }
$tab += New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values}
}
$tab | Export-Csv -Path $OutputFile
[/code:1]
Une autre écriture :
[code:1]
$tlConcatTab | Foreach-Object{
$Values = \"\"
Foreach($v in $_.Value){ $Values += \"$v`n\" }
New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values}
} | Export-Csv -Path $OutputFile
[/code:1]
ou bien encore, sur une seule ligne :
[code:1]
$tlConcatTab | Foreach-Object{ $Values = \"\" ; Foreach($v in $_.Value){ $Values += \"$v`n\" } ; New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values)} | Export-Csv -Path $OutputFile
[/code:1]
Dans cet exemple, je récupère chaque valeur du tableau représenté par la propriété Value. J'utilise le '`n' ('new line') comme séparateur.
Si j'ouvre le csv dans Excel, chaque cellule de la colonne 'Value' contient plusieurs lignes et sur chaque ligne on retrouve les valeurs du tableau contenu dans la propriété 'Value'.
Pour faire le test
[code:1]
$tlConcatTab = @()
$tlConcatTab += New-Object PSObject -Property @{Name = 2 ; Value = @('192.168.40.23', '5500', 'SWE13')}
$tlConcatTab += New-Object PSObject -Property @{Name = 1 ; Value = @('192.168.40.22', '5500', 'SWE12')}
$tlConcatTab += New-Object PSObject -Property @{Name = 0 ; Value = @('192.168.40.21', '5500', 'SWE11')}
$tlConcatTab |
Foreach-Object{ $Values = \"\" ; Foreach($v in $_.Value){ $Values += \"$v`n\" } ; New-Object PSObject -Property @{ Name = $_.Name ; Value = $Values}} |
Select-Object Name, Value |
Export-Csv -Path D:\Test.csv -Delimiter \";\" -NoTypeInformation -Encoding UTF8
Invoke-Item D:\Test.csv
[/code:1]
Dans excel, se rendre sur chaque cellule et / ou penser à élargir les lignes pour observer que toutes les valeurs sont bien présentes.
Attention : Si le fichier csv est ouvert au notepad, on ne voit pas les retours chariot, mais ils sont là. Ils sont visibles dans d'autres éditeurs, comme par exemple Notepad++ ...
@ +
Matthew BETTON<br><br>Message édité par: Matthew BETTON, à: 22/08/13 13:50
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Exporter un tableau a plusieurs dimensions en CSV