Question
Rediriger la sortie d'un script dans Excel(Résolu)
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 1 mois #777
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Rediriger sortie dans un fichier excel
Dans Excel, tu ouvres le fichier en choisissant d'ouvrir les types de fichiers texte (dans Excel 2007 il me propose les extensions *.prn, *.txt et *.csv par défaut).
Ensuite, dans l'assistant d'importation tu choisis le format délimité (choix par défaut normalement), puis dans la fenêtre suivante tu choisis la virgule comme séparateur (\"comma\" en anglais). Tu confirmes le tout, et voilà.
On doit pouvoir automatiser tout ça à partir de l'objet COM Excel, mais là je n'ai pas pratiqué, donc si qqu'un d'autre connaît, qu'il se manifeste!
Janel
Ensuite, dans l'assistant d'importation tu choisis le format délimité (choix par défaut normalement), puis dans la fenêtre suivante tu choisis la virgule comme séparateur (\"comma\" en anglais). Tu confirmes le tout, et voilà.
On doit pouvoir automatiser tout ça à partir de l'objet COM Excel, mais là je n'ai pas pratiqué, donc si qqu'un d'autre connaît, qu'il se manifeste!

Janel
Connexion ou Créer un compte pour participer à la conversation.
- Berfini
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
il y a 16 ans 1 mois #778
par Berfini
Gaby
Réponse de Berfini sur le sujet Re:Rediriger sortie dans un fichier excel
Oui oui qu'il se manifeste car le modifier une fois sous excel je sais faire mais le but de la manoeuvre est de le faire faire par powershell ^^
Gaby
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 1 mois #779
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Rediriger sortie dans un fichier excel
Bon, ben je m'y suis collé 
En grattant un peu dans MSDN j'ai fini par trouver comment faire. C'est un peu laborieux, à cause notamment des paramètres optionnels qu'on ne peut pas omettre dans PowerShell (comme dans C#) et qu'il faut donc inclure en leur passant le type [System.Type]::Missing spécialement conçu pour ça...
Bref, le code suivant devrait marcher, à ceci près qu'il ajoute des guillemets aux textes qui contiennent des espaces, alors que j'ai précisé xlTextQualifierNone qui devrait éviter ça. A creuser...
[code:1]$excel = new-object -com Excel.Application
# utile pour voir ce qu'on fait:
$excel.visible = $true
# quelques paramètres à passer, parmi ceux que j'ai vus qui paraissaient utiles:
$xlDelimited = [Microsoft.Office.Interop.Excel.xlTextParsingType]\"xlDelimited\"
$xlTextQualifierNone = [Microsoft.Office.Interop.Excel.XlTextQualifier]\"xlTextQualifierNone\"
# la valeur à passer si on veut laisser un paramètre par défaut:
$missing = [System.Type]::Missing
# le nom du fichier CSV à ouvrir, avec son chemin complet:
$file = \"c:\logs\mesfichiers.csv\"
# et enfin, la commande d'ouverture du fichier:
$csv = $excel.workbooks.opentext($file, $missing, 1, $xlDelimited, $xlTextQualifierNone, $missing, $missing, $missing, $true, $missing, $missing, $missing, $missing, $missing, $missing, $missing, $missing, $missing)[/code:1]
Tu l'auras noté, la dernière commande est particulièrement longue. Elle contient 18 paramètres qu'il faut tous renseigner. En l'occurrence, les paramètres que je renseigne effectivement sont le nom du fichier, la ligne de départ pour la lecture (1), le fait qu'il s'agisse d'un fichier délimité par des caractères séparateurs (et non pas à taille de colonne fixe), le fait que je ne veux pas de guillemets pour les champs texte, et l'utilisation de la virgule comme séparateur ($true en 9e paramètre). Pour tous les autres paramètres auxquels je ne veux pas toucher, j'utilise la variable $missing qui pointe sur le type [System.Type]::Missing.
Je te laisse compléter la suite, à savoir l'enregistrement du fichier (éventuellement dans un format XLS standard) etc.
Pour info, quelques-unes des sources que j'ai utilisées (toutes sur MSDN):
msdn2.microsoft.com/fr-fr/library/micros...op.excel(VS.80).aspx
msdn2.microsoft.com/fr-fr/library/micros...opentext(VS.80).aspx
msdn2.microsoft.com/en-us/library/ms178843(VS.80).aspx
Tiens-nous au courant, c'est intéressant comme exercice
. A l'occasion, j'écrirai un billet sur mon blog à ce sujet pour garder une trace de tout ça.
Janel<br><br>Message édité par: janel, à: 27/07/07 15:02

En grattant un peu dans MSDN j'ai fini par trouver comment faire. C'est un peu laborieux, à cause notamment des paramètres optionnels qu'on ne peut pas omettre dans PowerShell (comme dans C#) et qu'il faut donc inclure en leur passant le type [System.Type]::Missing spécialement conçu pour ça...
Bref, le code suivant devrait marcher, à ceci près qu'il ajoute des guillemets aux textes qui contiennent des espaces, alors que j'ai précisé xlTextQualifierNone qui devrait éviter ça. A creuser...
[code:1]$excel = new-object -com Excel.Application
# utile pour voir ce qu'on fait:
$excel.visible = $true
# quelques paramètres à passer, parmi ceux que j'ai vus qui paraissaient utiles:
$xlDelimited = [Microsoft.Office.Interop.Excel.xlTextParsingType]\"xlDelimited\"
$xlTextQualifierNone = [Microsoft.Office.Interop.Excel.XlTextQualifier]\"xlTextQualifierNone\"
# la valeur à passer si on veut laisser un paramètre par défaut:
$missing = [System.Type]::Missing
# le nom du fichier CSV à ouvrir, avec son chemin complet:
$file = \"c:\logs\mesfichiers.csv\"
# et enfin, la commande d'ouverture du fichier:
$csv = $excel.workbooks.opentext($file, $missing, 1, $xlDelimited, $xlTextQualifierNone, $missing, $missing, $missing, $true, $missing, $missing, $missing, $missing, $missing, $missing, $missing, $missing, $missing)[/code:1]
Tu l'auras noté, la dernière commande est particulièrement longue. Elle contient 18 paramètres qu'il faut tous renseigner. En l'occurrence, les paramètres que je renseigne effectivement sont le nom du fichier, la ligne de départ pour la lecture (1), le fait qu'il s'agisse d'un fichier délimité par des caractères séparateurs (et non pas à taille de colonne fixe), le fait que je ne veux pas de guillemets pour les champs texte, et l'utilisation de la virgule comme séparateur ($true en 9e paramètre). Pour tous les autres paramètres auxquels je ne veux pas toucher, j'utilise la variable $missing qui pointe sur le type [System.Type]::Missing.
Je te laisse compléter la suite, à savoir l'enregistrement du fichier (éventuellement dans un format XLS standard) etc.
Pour info, quelques-unes des sources que j'ai utilisées (toutes sur MSDN):
msdn2.microsoft.com/fr-fr/library/micros...op.excel(VS.80).aspx
msdn2.microsoft.com/fr-fr/library/micros...opentext(VS.80).aspx
msdn2.microsoft.com/en-us/library/ms178843(VS.80).aspx
Tiens-nous au courant, c'est intéressant comme exercice

Janel<br><br>Message édité par: janel, à: 27/07/07 15:02
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Rediriger la sortie d'un script dans Excel(Résolu)