Question Faire un tableau vite fait depuis Excel
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 15 ans 6 jours #5737
par Madrolle
ShellDealer sur Twitter
Réponse de Madrolle sur le sujet Re:Faire un tableau vite fait depuis Excel
Read-HostToArray, très bien trouvé, je vote pour.
j'ai opté pour une solution où l'on peut choisir la séquence de fin avec le '.' par défaut, un classique.
j'avoue ne pas comprendre pourquoi la chaîne vide se comporte différemment, j'ai adapté mon code en conséquence.
Merci pour vos contributions.
[code:1]
function Read-HostToArray {
param([String]$fin='.')
[string[]]$tab=@()
Write-Host \"Collez ici vos données .\"
do {
$tab+=$(read-host)
} until ($tab -eq $fin)
if ($fin -eq ''){ $cut=3 } else { $cut=2 }
$tab[0..$($tab.length-$cut)]
}
[/code:1]
j'ai opté pour une solution où l'on peut choisir la séquence de fin avec le '.' par défaut, un classique.
j'avoue ne pas comprendre pourquoi la chaîne vide se comporte différemment, j'ai adapté mon code en conséquence.
Merci pour vos contributions.
[code:1]
function Read-HostToArray {
param([String]$fin='.')
[string[]]$tab=@()
Write-Host \"Collez ici vos données .\"
do {
$tab+=$(read-host)
} until ($tab -eq $fin)
if ($fin -eq ''){ $cut=3 } else { $cut=2 }
$tab[0..$($tab.length-$cut)]
}
[/code:1]
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 11 ans 4 mois #15428
par Madrolle
ShellDealer sur Twitter
Réponse de Madrolle sur le sujet Re:Faire un tableau vite fait depuis Excel
Depuis une éternité, je voulais me faire une version WPF qui n'a que des avantages, voilà c'est fait, un gadget sert tous les jours.
[code:1]
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName PresentationCore
Add-Type -AssemblyName WindowsBase
Function New-arrayOfString () {
[XML]$xaml = @'
<Window x:Name=\"array_box\"
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\"
Title=\"New-array\" MinWidth=\"200\" MinHeight=\"150\" Width=\"300\" Height=\"450\" Background=\"#FF012456\">
<Grid Margin=\"0\">
<TextBox x:Name=\"liste\" Margin=\"10\" VerticalScrollBarVisibility=\"Visible\" AcceptsReturn=\"True\" Foreground=\"#FF012456\" HorizontalScrollBarVisibility=\"Visible\"/>
</Grid>
</Window>
'@
$reader = New-Object System.Xml.XmlNodeReader $xaml
$form = [Windows.Markup.xamlreader]::load($reader)
$liste = $form.FindName('liste')
$form.showdialog() | Out-Null
[string[]]$e = ($liste.text -split \"`r`n\"«»)
$e
#$e.gettype()
}
[/code:1]
Il suffit de fermer la fenêtre pour que les lignes ajoutées soient disponibles.
Ne pas oublier le mode '-sta' si powershell 2, testé avec .NET 4.0
Cela dit quand il n'y a qu'une ligne dans la box (éventuellement vide), ça me sort obstinément vers la variable de destination une [string] et non un [string[]] Si quel-qu'un à une solution à ce petit détail énervant ...
Message édité par: Perso, à: 27/07/13 23:31<br><br>Message édité par: Perso, à: 28/07/13 12:18
[code:1]
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName PresentationCore
Add-Type -AssemblyName WindowsBase
Function New-arrayOfString () {
[XML]$xaml = @'
<Window x:Name=\"array_box\"
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\"
Title=\"New-array\" MinWidth=\"200\" MinHeight=\"150\" Width=\"300\" Height=\"450\" Background=\"#FF012456\">
<Grid Margin=\"0\">
<TextBox x:Name=\"liste\" Margin=\"10\" VerticalScrollBarVisibility=\"Visible\" AcceptsReturn=\"True\" Foreground=\"#FF012456\" HorizontalScrollBarVisibility=\"Visible\"/>
</Grid>
</Window>
'@
$reader = New-Object System.Xml.XmlNodeReader $xaml
$form = [Windows.Markup.xamlreader]::load($reader)
$liste = $form.FindName('liste')
$form.showdialog() | Out-Null
[string[]]$e = ($liste.text -split \"`r`n\"«»)
$e
#$e.gettype()
}
[/code:1]
Il suffit de fermer la fenêtre pour que les lignes ajoutées soient disponibles.
Ne pas oublier le mode '-sta' si powershell 2, testé avec .NET 4.0
Cela dit quand il n'y a qu'une ligne dans la box (éventuellement vide), ça me sort obstinément vers la variable de destination une [string] et non un [string[]] Si quel-qu'un à une solution à ce petit détail énervant ...
Message édité par: Perso, à: 27/07/13 23:31<br><br>Message édité par: Perso, à: 28/07/13 12:18
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 ans 4 mois #15434
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Faire un tableau vite fait depuis Excel
Salut,
Perso écrit:
[code:1]
$Result=@( New-arrayOfString )
[/code:1]
Ou la virgule sur le résultat
[code:1]
[string[]]$e = ($liste.text -split \"`r`n\"«»)
,$e
}
[/code:1]
Ainsi le type de ta variable n'est pas transformé .<br><br>Message édité par: Laurent Dardenne, à: 28/07/13 13:33
Perso écrit:
Utilise la groupement @() :Si quelqu'un à une solution à ce petit détail énervant ...
[code:1]
$Result=@( New-arrayOfString )
[/code:1]
Ou la virgule sur le résultat
[code:1]
[string[]]$e = ($liste.text -split \"`r`n\"«»)
,$e
}
[/code:1]
Ainsi le type de ta variable n'est pas transformé .<br><br>Message édité par: Laurent Dardenne, à: 28/07/13 13:33
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 11 ans 4 mois #15438
par Madrolle
ShellDealer sur Twitter
Réponse de Madrolle sur le sujet Re:Faire un tableau vite fait depuis Excel
Ha, merci ! la virgule est exactement ce qui me fallait.
(comme pour Get-member, ça ne me serait pas venu à l'esprit)
[code:1],($liste.text -split \"`r`n\"«»)[/code:1]
(comme pour Get-member, ça ne me serait pas venu à l'esprit)
[code:1],($liste.text -split \"`r`n\"«»)[/code:1]
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.112 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- Faire un tableau vite fait depuis Excel