Comment lire le contenu d’un fichier Excel en PowerShell ?
Si vous avez des extracts de parc informatique ou n’importe quel document généré automatiquement au format Excel (ou CSV), peut-être avez-vous déjà eu besoin de parcourir un fichier Excel à la recherche de certaines informations.
Ceci d’autant plus vrai que vous n’avez peut-être pas besoin de l’ensemble des données contenues dans le fichier mais de simplement récupérer le contenu de certaines cellules précises.
Pour l’exemple nous allons utiliser un formulaire tout simple au format XLSX. Nous avons donc 5 questions qui sont posées dans la colonne C. Nous voulons récupérer les informations qui ont été saisies par l’utilisateur dans la colonne D.
Bref, il faut donc récupérer les données contenues dans les cellules D5 -> D7 et D9 -> 10.
Je vous propose donc ici un rapide script qui vous permettra de récupérer certaines cellules précises d’un document Excel.
Le script va parcourir le fichier Excel et récupérer uniquement les informations pour les cellules souhaitées. Le principe est simple, il vous suffit, comme à la bataille navale, de renseigner la position de la cellule cible. 🙂
- Cellule A1 / Colonne = 1 / Ligne = 1
- Cellule C4 / Colonne = 3 / Ligne 4
Je ne vais pas expliquer de manière détailler le script, c’est plutôt facile à comprendre. Au besoin, vous pouvez consulter cet article pour les généralités sur l’utilisation d’Excel en PowerShell (création d’un nouveau document, sauvegarde, ouverture d’un fichier existant…).
Algo « sur papier » 😉 :
- On récupère le chemin complet vers le fichier Excel à analyser
- On crée un nouvel objet Excel et on ouvre notre document XLSX
- Toutes les cellules qui nous intéressent sont en colonne D (colonne numéro 4) et aux lignes 5, 6, 7, 9 et 10.
- On affiche bien sûr les informations contenues dans les cellules
- On ferme le workbook et Microsoft Excel.
Comme d’habitude, vous trouverez ci-dessous un exemple de script complet, sans prétention, que vous pourrez tester et adapter à votre besoin :
- Script – Lecture d’un fichier Excel passé en paramètre (téléchargeable ici : ReadExcel-v1.3)
Si vous avez des questions, n’hésitez pas ! 👍
Bonjour,
je tente de lancer ce script mais j’ai cette erreur :
Exception calling « Open » with « 1 » argument(s): « Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) »
At line:17 char:1
Powershell version 4.0
J’ai corrigé l’exemple de script la nouvelle version fonctionne (PowerShell v4 / Excel 2013 / US-FR). Il y a une problématique au niveau de la langue de l’OS. Pour que ça fonctionne, il faut forcer en en-US. C’est effectivement expliqué partout mais cette ligne s’est perdue au moment de l’import va-t-on dire. Merci pour le retour.
M. Thibault
Effectivement cela fonction partiellement, cependant j’ai été obligé de mettre le chemin d’accès en dur dans le script pour que cela fonctionne.
Comment fait si je veux toute une colonne ?
Pour le chemin c’est normal. C’est indiqué dans l’article 😉 Mais tu dois pouvoir modifier ça pour que à l’appel du fichier il récupère le chemin complet :p
Pour toute la colonne, quand tu auras trouvé me diras 🙂
Bonjour,
Pour info, $Excel.Visible = $True rend la feuille visible et non l’inverse
Merci pour le script
Meilleures salutations,
Noo
Tout à fait. Merci de votre vigilance.
J’up une version corrigée.
Bonjour,
Je souhaiterai créer un script PowerShell qui permet de vérifier à partir d’un fichier Excel si l’adresse Mac correspond bien à l’adresse IP et à l’hostname indiqué dans le fichier Excel.
Si l’adresse MAC = adresse IP + hostname du fichier alors ne rien faire
Sinon récurer les infos dans le fichier Excel et faire les modifs automatiquement.
Pouvez-vous m’aiguiller un peu svp ?
Malheureusement, c’est difficile de vous aider sans avoir un exemple de document. Par contre, si les informations sont disponibles dans le fichier Excel pourquoi ne pas réaliser l’opération avec des formules Excel ? Cela serait peut-être plus simple.
Excusez moi je me suis mal exprimée.
Je veux lancer un script au démarrage de mon ordinateur.
Le script va vérifier que l’adresse mac l’adresse IP ainsi que le hostname trouvé dans l’ordinateur correspond bien à la ligne du fichier exel.
Par exemple avec l’exemple de l’image ci dessus, lorsque je démarre mon ordinateur, si mon adresse mac est 123:C le script va lire le fichier exel il va regarder la ligne de l’adresse mac 123:C et va vérifier que l’adresse IP et le hostname de la machine correspond bien à l’adresse IP 192.168.0.1 et Machine 1 Hostname.
Si cela correspond on démarre l’ordinateur sans rien faire.
Si les informations ne sont pas bonnes on modifie grace au fichier excel.
Cela est peut être plus claire pour vous ou pas du tout ?
Merci beaucoup pour votre aide Thibault !!!
Excusez moi je me suis mal exprimée.
Je veux lancer un script au démarrage de mon ordinateur.
Le script va vérifier que l’adresse mac l’adresse IP ainsi que le hostname trouvé dans l’ordinateur correspond bien à la ligne du fichier exel.
Par exemple avec l’exemple de l’image ci dessus, lorsque je démarre mon ordinateur, si mon adresse mac est 123:C le script va lire le fichier exel il va regarder la ligne de l’adresse mac 123:C et va vérifier que l’adresse IP et le hostname de la machine correspond bien à l’adresse IP 192.168.0.1 et Machine 1 Hostname.
Si cela correspond on démarre l’ordinateur sans rien faire.
Si les informations ne sont pas bonnes on modifie grace au fichier excel.
Cela est peut être plus claire pour vous ou pas du tout ?
Merci beaucoup pour votre aide Thibault !!!
Excusez moi je me suis mal exprimée.
Je veux lancer un script au démarrage de mon ordinateur.
Le script va vérifier que l’adresse mac l’adresse IP ainsi que le hostname trouvé dans l’ordinateur correspond bien à la ligne du fichier exel.
Par exemple avec l’exemple de l’image ci dessous, lorsque je démarre mon ordinateur, si mon adresse mac est 123:C le script va lire le fichier exel il va regarder la ligne de l’adresse mac 123:C et va vérifier que l’adresse IP et le hostname de la machine correspond bien à l’adresse IP 192.168.0.1 et Machine 1 Hostname.
Si cela correspond on démarre l’ordinateur sans rien faire.
Si les informations ne sont pas bonnes on modifie grace au fichier excel.
Je vous ai joins à ce post une capture de mon script.
Cela est peut être plus claire pour vous ou pas du tout ?
Merci beaucoup pour votre aide Thibault !!!