Question Powershell 5 module IMPORT-EXCEL

Plus d'informations
il y a 5 ans 10 mois #28026 par Sebastien Maltais
Bonjour,

Voici un guide utilisateur qui explique comment tirer profit du module powershell IMPORT-EXCEL

1- Installer powershell 5.1 www.microsoft.com/en-us/download/details.aspx?id=54616

2- Installer le module IMPORT-EXCEL

[code:1]install-module -name import-excel[/code:1]


Exemple 1

Utiliser un fichier excel comme source de donné au même titre que l'on utilise un fichier CSV.

[code:1]##################################################################
##################################################################
##################################################################
###################### IMPORT-EXCEL ##############################
##################################################################
##################################################################
##################################################################

### Importation du fichier Excel dans la variable $excel en spéciafiant la worksheet
$excel_sheet = Import-Excel C:\power\fichier_excel.xlsx -WorksheetName \"Feuil1\"

foreach($line in $excel_sheet){

$couleur = $line.couleur
$voiture = $line.voiture
$distance = $line.distance

$value = \"Le modèle \" + $voiture + \" est couleur \" + $couleur + \" et a parcouru \" + $distance

write-output $value


}
[/code:1]

Voici ex emple comment convertir un tableau avec des objet en fichier excel.

Le fichier excel aura les propriété suivantes:
- Première ligne figer
- Format du tableau medium9
- Nom du tableau \"proc\"
- Nom de la feuille \"process\"
- Redimensionnement automatique des cellules \"-autosize\"

Voici l'exemple

[code:1]################################################################################
################################################################################
################################################################################
################################### EXCEL ######################################
################################################################################
################################################################################
################################################################################


### Creation de l'array
$array = @()

### set la variable à $null
$temp = $null

while($temp -lt \"20\"«»){

### Pondération de la variable à chaque passage dans la boucle.
$temp = $count++

### Pause pour attendre le prochaine passage de la boucle
Start-Sleep -Seconds 30

### Chargement des process de l'ordinateur en mémoire pour l'exemple
$process_list = get-process

###loop des process
foreach($process in $process_list){

### Creation des variables
$proc_name = $process.processname
$cpu = $process.TotalProcessorTime
$mem = [math]::Round($process.VirtualMemorySize/1mb,2)



### Creation des objets Powershell
$obj = New-Object PSObject

Add-Member -InputObject $obj -MemberType NoteProperty -Name \"Process Name\" -Value $proc_name -force
Add-Member -InputObject $obj -MemberType NoteProperty -Name \"Temp processor\" -Value $cpu -force
Add-Member -InputObject $obj -MemberType NoteProperty -Name \"Memoire(MB«»)\" -Value $mem -force

### Ajout des objet au tableau
$array += $obj

}
}

### Fichier EXCEL
$fichier_excel = \"c:\power\excel_process.xlsx\"

### Conversion du tableau en fichier excel.
$array | Export-Excel -Path $fichier_excel -WorksheetName \"Process\" -FreezeTopRow -AutoSize -TableStyle Medium9 -TableName \"proc\"
[/code:1]

Comment faire un seul fichier excel mais avec plusieurs feuilles à partir de plusieurs sources de donner. Voici comment dans cette exemple.

[code:1]################################################################################
################################################################################
################################################################################
################################### EXCEL ######################################
################################################################################
################################################################################
################################################################################

### Dossiers

$chiens_dossier = \"c:\power\excel\chiens\\" ### Chiens
$chats_dossier = \"c:\power\excel\chats\\" ### Chats
$oiseaux_dossier = \"c:\power\excel\oiseaux\\" ### Oiseaux
$tamia_dossier = \"c:\power\excel\oiseaux\\" ### Tamia
$vaches_dossier = \"c:\power\excel\vaches\\" ### Vache

### Les listes des fichiers contenue dans chaques dossiers.

$chiens_liste = (Get-ChildItem -Path $chiens_dossier).FullName
$chats_liste = (Get-ChildItem -Path $chats_dossier).FullName
$oiseaux_liste = (Get-ChildItem -Path $oiseaux_dossier).FullName
$tamia_liste = (Get-ChildItem -Path $tamia_dossier).FullName
$vaches_liste = (Get-ChildItem -Path $vaches_dossier).FullName



### Creation de l'array chien pour la création du Excel

$array_chien = @()

foreach($chien in $chiens_liste){

$chien_property = Get-ItemProperty -path $chien
$chien_photo_name = $chien_property.Name
$chien_photo_grosseur = [math]::Round($chien_property.Length/1mb,2)
$chien_photo_creation_date = $chien_property.CreationTime
$chien_photo_dossier = $chien_property.Directory

### Creation des objets Powershell
$obj_chien = New-Object PSObject

Add-Member -InputObject $obj_chien -MemberType NoteProperty -Name \"Nom du fichier\" -Value $chien_photo_name -force
Add-Member -InputObject $obj_chien -MemberType NoteProperty -Name \"Taille(MB«»)\" -Value $chien_photo_grosseur -force
Add-Member -InputObject $obj_chien -MemberType NoteProperty -Name \"Date\" -Value $chien_photo_creation_date -force
Add-Member -InputObject $obj_chien -MemberType NoteProperty -Name \"Dossier\" -Value $chien_photo_dossier -force

### Ajout des objet au tableau
$array_chien += $obj_chien


}

### Creation de l'array chat pour la création du Excel

$array_chat = @()

foreach($chat in $chats_liste ){

$chat_property = Get-ItemProperty -path $chat
$chat_photo_name = $chat_property.Name
$chat_photo_grosseur = [math]::Round($chat_property.Length/1mb,2)
$chat_photo_creation_date = $chat_property.CreationTime
$chat_photo_dossier = $chat_property.Directory

### Creation des objets Powershell
$obj_chat = New-Object PSObject

Add-Member -InputObject $obj_chat -MemberType NoteProperty -Name \"Nom du fichier\" -Value $chat_photo_name -force
Add-Member -InputObject $obj_chat -MemberType NoteProperty -Name \"Taille(MB«»)\" -Value $chat_photo_grosseur -force
Add-Member -InputObject $obj_chat -MemberType NoteProperty -Name \"Date\" -Value $chat_photo_creation_date -force
Add-Member -InputObject $obj_chat -MemberType NoteProperty -Name \"Dossier\" -Value $chat_photo_dossier -force

### Ajout des objet au tableau
$array_chat += $obj_chat


}

### Creation de l'array oiseau pour la création du Excel

$array_oiseau = @()

foreach($oiseau in $oiseaux_liste ){

$oiseau_property = Get-ItemProperty -path $oiseau
$oiseau_photo_name = $oiseau_property.Name
$oiseau_photo_grosseur = [math]::Round($oiseau_property.Length/1mb,2)
$oiseau_photo_creation_date = $oiseau_property.CreationTime
$oiseau_photo_dossier = $oiseau_property.Directory

### Creation des objets Powershell
$obj_oiseau = New-Object PSObject

Add-Member -InputObject $obj_oiseau -MemberType NoteProperty -Name \"Nom du fichier\" -Value $oiseau_photo_name -force
Add-Member -InputObject $obj_oiseau -MemberType NoteProperty -Name \"Taille(MB«»)\" -Value $oiseau_photo_grosseur -force
Add-Member -InputObject $obj_oiseau -MemberType NoteProperty -Name \"Date\" -Value $oiseau_photo_creation_date -force
Add-Member -InputObject $obj_oiseau -MemberType NoteProperty -Name \"Dossier\" -Value $oiseau_photo_dossier -force

### Ajout des objet au tableau
$array_oiseau += $obj_oiseau


}


### Creation de l'array tamia pour la création du Excel

$array_tamia = @()

foreach($tamia in $tamia_liste){

$tamia_property = Get-ItemProperty -path $tamia
$tamia_photo_name = $oiseau_property.Name
$tamia_photo_grosseur = [math]::Round($tamia_property.Length/1mb,2)
$tamia_photo_creation_date = $tamia_property.CreationTime
$tamia_photo_dossier = $tamia_property.Directory

### Creation des objets Powershell
$obj_tamia = New-Object PSObject

Add-Member -InputObject $obj_tamia -MemberType NoteProperty -Name \"Nom du fichier\" -Value $tamia_photo_name -force
Add-Member -InputObject $obj_tamia -MemberType NoteProperty -Name \"Taille(MB«»)\" -Value $tamia_photo_grosseur -force
Add-Member -InputObject $obj_tamia -MemberType NoteProperty -Name \"Date\" -Value $tamia_photo_creation_date -force
Add-Member -InputObject $obj_tamia -MemberType NoteProperty -Name \"Dossier\" -Value $tamia_photo_dossier -force

### Ajout des objet au tableau
$array_tamia += $obj_oiseau


}



### Creation de l'array vache pour la création du Excel

$array_vache = @()

foreach($vache in $vaches_liste){

$vache_property = Get-ItemProperty -path $vache
$vache_photo_name = $vache_property.Name
$vache_photo_grosseur = [math]::Round($vache_property.Length/1mb,2)
$vache_photo_creation_date = $vache_property.CreationTime
$vache_photo_dossier = $vache_property.Directory

### Creation des objets Powershell
$obj_vache = New-Object PSObject

Add-Member -InputObject $obj_vache -MemberType NoteProperty -Name \"Nom du fichier\" -Value $vache_photo_name -force
Add-Member -InputObject $obj_vache -MemberType NoteProperty -Name \"Taille(MB«»)\" -Value $vache_photo_grosseur -force
Add-Member -InputObject $obj_vache -MemberType NoteProperty -Name \"Date\" -Value $vache_photo_creation_date -force
Add-Member -InputObject $obj_vache -MemberType NoteProperty -Name \"Dossier\" -Value $vache_photo_dossier -force

### Ajout des objet au tableau
$array_vache += $obj_vache


}

### Fichier de sortit excel
$ichier_excel_final = \"C:\power\excel\listes_animaux.xlsx\"

### Transformation des tableaux en EXCEL dans le même fichier avec des feuilles différente.

$array_chien | Export-Excel -path $ichier_excel_final -WorksheetName \"Chiens\" -Append -AutoSize -FreezeFirstColumn -TableName \"canin\" -TableStyle Medium10
$array_chat | Export-Excel -path $ichier_excel_final -WorksheetName \"Chats\" -Append -AutoSize -FreezeFirstColumn -TableName \"felin\" -TableStyle Dark5
$array_oiseau | Export-Excel -path $ichier_excel_final -WorksheetName \"Oiseaux\" -Append -AutoSize -FreezeFirstColumn -TableName \"coco\" -TableStyle Light15
$array_tamia | Export-Excel -path $ichier_excel_final -WorksheetName \"Tamia\" -Append -AutoSize -FreezeFirstColumn -TableName \"tamia\" -TableStyle Light11
$array_vache | Export-Excel -path $ichier_excel_final -WorksheetName \"Vache\" -Append -AutoSize -FreezeFirstColumn -TableName \"herbi\" -TableStyle Medium10

[/code:1]

Voici un exemple qui explique comment fusionner un classeur avec plusieurs feuilles existant avec un classeur avec des feuilles existante. Vous avez 2 documents avec plusieurs feuilles vous pouvez donc les fusionner.

[code:1]################################################################################
################################################################################
################################################################################
################################### EXCEL ######################################
################################################################################
################################################################################
################################################################################

### Fichier Excel importer
$fichier_excel_1 = \"C:\power\excel\listes_animaux.xlsx\"

### Fichier existant contenant d'autre feuille
$fichier_excel_final = \"C:\power\excel\excel_process.xlsx\"

### Liste des feuilles du classeur excel avec la commande
$worksheet_name_liste = (Get-ExcelSheetInfo $fichier_excel_1).name

### loop pour importer les feuilles une par une du classeur
foreach($worksheet in $worksheet_name_liste){

### importation de la feuille à importer dans l'autre feuille
$import = Import-Excel -Path $fichier_excel_1 -WorksheetName $worksheet

### Liste des feuilles du Classeur de destination
$worksheet_name_liste_final = (Get-ExcelSheetInfo $fichier_excel_final).name

if($worksheet_name_liste_final -eq $worksheet){$worksheet_final = $worksheet + \"1\"}else{$worksheet_final = $worksheet}

### numero auto pour le nom du tableau dans la feuille
$nom_tableau = $worksheet_final + \"_table\"


### Exportation des donnée vers le fichier excel final
$import | Export-Excel -path $fichier_excel_final -WorksheetName $worksheet_final -Append -AutoSize -FreezeFirstColumn -TableName $nom_tableau -TableStyle Medium10



}
[/code:1]



D'autres exemple suivront,,,,,,:whistle:

Message édité par: iTork, à: 24/01/19 14:34

Message édité par: iTork, à: 24/01/19 14:37

Message édité par: iTork, à: 24/01/19 15:58<br><br>Message édité par: iTork, à: 24/01/19 18:47
Le sujet a été verrouillé.
Plus d'informations
il y a 5 ans 10 mois #28052 par Philippe
salut iTork

merci pour ce tuto pour installation et l'utilisation du module IMPORT-EXCEL !! :)

il y a fréquemment des demandes sur l'exploitation de Excel dans PowerShell !! B)
Le sujet a été verrouillé.
Plus d'informations
il y a 5 ans 10 mois #28064 par Sebastien Maltais
Nouvelle exemple aujourd'hui. Tu vas voir d'autres suivront avec des calcules et autres choses.
Le sujet a été verrouillé.
Plus d'informations
il y a 5 ans 10 mois #28096 par Habay Olivier
Salut iTork
Merci pour le tuto sur le module excel.

Pour ma part, j'essaie en vain de rechercher une feuille spécifique (dans un classeur multi-feuille) pour y écrire des valeurs...

Ma question plus détaillée est posté ici:
powershell-scripting.com/index.php?optio...5&id=28095#28095

Apparemment, tu es LA personne powershell/excel

Si tu avais une solution ce serait TOP...
Un tout grand merci d'avance
Le sujet a été verrouillé.
Plus d'informations
il y a 5 ans 9 mois #28255 par Atou
Réponse de Atou sur le sujet Re:Powershell 5 module IMPORT-EXCEL
Salut iTork, je suis actuellement aussi en difficulté avec Excel et Powershell... Voici la description plus précise de mon problème : social.technet.microsoft.com/Forums/fr-F...-et-excel?forum=1300

Merci d'avance ;)
Le sujet a été verrouillé.
Plus d'informations
il y a 5 ans 9 mois #28257 par Arnaud Petitjean
Merci de poser les questions dans le forum prévu à cet effet. Ici nous sommes dans la partie \&quot;contributions\&quot;.

Je clos le sujet.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Le sujet a été verrouillé.
Temps de génération de la page : 0.122 secondes
Propulsé par Kunena