Question
Fusionner plusieurs fichiers xslx
- alman
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 5 ans 3 mois #28000
par alman
Fusionner plusieurs fichiers xslx a été créé par alman
Bonjour,
Je débute en Powershell, je sollicite votre aide.
J'ai 10 fichiers excel (xslx) sous forme de table avec le même nom de colonne, la même structure (2 feuilles où la première ligne est inutile..c'est l'entête) et ce, dans 10 dossiers différents.
Je souhaite consolider/fusionner les 10 fichiers dans 2 fichiers (1 par feuille) au format CSV.
J'ai trouvé ça sur un site mais j'avoue ne pas comprendre grand chose.
[code:1]$ExcelObject=New-Object -ComObject excel.application
$ExcelObject.visible=$false
$ExcelFiles=Get-ChildItem -Path C:\test1
$Workbook=$ExcelObject.Workbooks.add()
$Worksheet=$Workbook.Sheets.Item(\"sheet1\"«»)
foreach($ExcelFile in $ExcelFiles){
$Everyexcel=$ExcelObject.Workbooks.Open($ExcelFile.FullName)
$Everysheet=$Everyexcel.sheets.item(1)
$Everysheet.Copy($Worksheet)
$Everyexcel.Close()
}
$Workbook.SaveAs(\"C:\test1\RESULTAT\merge.xlsx\"«»)
$ExcelObject.Quit()
[/code:1]
Je vous remercie de l'aide que vous pourrez m'apporter.<br><br>Message édité par: Arnaud, à: 8/01/19 14:20
Je débute en Powershell, je sollicite votre aide.
J'ai 10 fichiers excel (xslx) sous forme de table avec le même nom de colonne, la même structure (2 feuilles où la première ligne est inutile..c'est l'entête) et ce, dans 10 dossiers différents.
Je souhaite consolider/fusionner les 10 fichiers dans 2 fichiers (1 par feuille) au format CSV.
J'ai trouvé ça sur un site mais j'avoue ne pas comprendre grand chose.
[code:1]$ExcelObject=New-Object -ComObject excel.application
$ExcelObject.visible=$false
$ExcelFiles=Get-ChildItem -Path C:\test1
$Workbook=$ExcelObject.Workbooks.add()
$Worksheet=$Workbook.Sheets.Item(\"sheet1\"«»)
foreach($ExcelFile in $ExcelFiles){
$Everyexcel=$ExcelObject.Workbooks.Open($ExcelFile.FullName)
$Everysheet=$Everyexcel.sheets.item(1)
$Everysheet.Copy($Worksheet)
$Everyexcel.Close()
}
$Workbook.SaveAs(\"C:\test1\RESULTAT\merge.xlsx\"«»)
$ExcelObject.Quit()
[/code:1]
Je vous remercie de l'aide que vous pourrez m'apporter.<br><br>Message édité par: Arnaud, à: 8/01/19 14:20
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 5 ans 3 mois #28004
par Philippe
Réponse de Philippe sur le sujet Re:Fusionner plusieurs fichiers xslx
salut alman69
je t'ai commenter chaque ligne pour que tu puisse comprendre ce que fais le script
[code:1]$ExcelObject = New-Object -ComObject excel.application # ouverture d'excel
$ExcelObject.visible = $false # on cache excel
$ExcelFiles = Get-ChildItem -Path C:\test1 # liste tous les fichier du dossier c:\test1
$Workbook = $ExcelObject.Workbooks.add() # creation d'un nouveau fichier(classeur) excel
$Worksheet = $Workbook.Sheets.item(1) # on se positionne sur la première feuille
foreach ($ExcelFile in $ExcelFiles) { # boucle sur la liste des fichiers trouver
$Everyexcel = $ExcelObject.Workbooks.Open($ExcelFile.FullName) # ouvre un fichier excel
$Everysheet = $Everyexcel.sheets.item(1) # ce positionne sur la 1er feuille
$Everysheet.Copy($Worksheet) # copie la feuille dans le classeur créé plus haut
$Everyexcel.Close() # ferme le fichier
}
$Workbook.SaveAs(\"C:\test1\merge.xlsx\"«») # enregistre le classeur créé
$ExcelObject.Quit() # quit excel
[/code:1]
a la fin du script tu a un fichier merge.xlsx qui contient 10 feuilles, les feuille des dix classeurs
si les fichier ce trouve dans des sous-dossiers de test1 il te suffit de mettre \"-Recurse\" a la suite de Get-ChildItem
si se n'est pas le cas ou qu'il y a d'autre fichiers dans les dossiers il faudra procédé autrement
je t'ai commenter chaque ligne pour que tu puisse comprendre ce que fais le script
[code:1]$ExcelObject = New-Object -ComObject excel.application # ouverture d'excel
$ExcelObject.visible = $false # on cache excel
$ExcelFiles = Get-ChildItem -Path C:\test1 # liste tous les fichier du dossier c:\test1
$Workbook = $ExcelObject.Workbooks.add() # creation d'un nouveau fichier(classeur) excel
$Worksheet = $Workbook.Sheets.item(1) # on se positionne sur la première feuille
foreach ($ExcelFile in $ExcelFiles) { # boucle sur la liste des fichiers trouver
$Everyexcel = $ExcelObject.Workbooks.Open($ExcelFile.FullName) # ouvre un fichier excel
$Everysheet = $Everyexcel.sheets.item(1) # ce positionne sur la 1er feuille
$Everysheet.Copy($Worksheet) # copie la feuille dans le classeur créé plus haut
$Everyexcel.Close() # ferme le fichier
}
$Workbook.SaveAs(\"C:\test1\merge.xlsx\"«») # enregistre le classeur créé
$ExcelObject.Quit() # quit excel
[/code:1]
a la fin du script tu a un fichier merge.xlsx qui contient 10 feuilles, les feuille des dix classeurs
si les fichier ce trouve dans des sous-dossiers de test1 il te suffit de mettre \"-Recurse\" a la suite de Get-ChildItem
si se n'est pas le cas ou qu'il y a d'autre fichiers dans les dossiers il faudra procédé autrement
Connexion ou Créer un compte pour participer à la conversation.
- Sebastien Maltais
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 5 ans 3 mois #28011
par Sebastien Maltais
Réponse de Sebastien Maltais sur le sujet Re:Fusionner plusieurs fichiers xslx
Bonjour,
C'est l'ancienne mode ce que vous faite. Avec le module de powershell gallery \"import-excel\" ça prend 5 minutes.
1- Installer le module excel : Install-Module -Name ImportExcel
2- Le script!
[code:1]######################################################################
###################### Fusion Excel ##################################
######################################################################
### liste le dossier contenant les fichier excel
$fichiers_excel = (get-childitem -Path \"c:\power\\"«»).FullName
### Fichier de sortit fusionner
$fusion_excel = \"C:\power\result.xlsx\"
foreach($fichier in $fichiers_excel){
Import-Excel -Path $fichier -NoHeader | Export-Excel -Path $fusion_excel -Append -WorksheetName $fichier
&#12288;
}
[/code:1]<br><br>Message édité par: iTork, à: 15/01/19 20:48
C'est l'ancienne mode ce que vous faite. Avec le module de powershell gallery \"import-excel\" ça prend 5 minutes.
1- Installer le module excel : Install-Module -Name ImportExcel
2- Le script!
[code:1]######################################################################
###################### Fusion Excel ##################################
######################################################################
### liste le dossier contenant les fichier excel
$fichiers_excel = (get-childitem -Path \"c:\power\\"«»).FullName
### Fichier de sortit fusionner
$fusion_excel = \"C:\power\result.xlsx\"
foreach($fichier in $fichiers_excel){
Import-Excel -Path $fichier -NoHeader | Export-Excel -Path $fusion_excel -Append -WorksheetName $fichier
&#12288;
}
[/code:1]<br><br>Message édité par: iTork, à: 15/01/19 20:48
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 5 ans 3 mois #28025
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fusionner plusieurs fichiers xslx
Salut,
iTork écrit:
Dit autrement, ce module évite de connaitre les détails d'implémentation
iTork écrit:
Nous somme déjà démodés :-/ , quelle malchance .C'est l'ancienne mode ce que vous faites.
Dit autrement, ce module évite de connaitre les détails d'implémentation
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Fusionner plusieurs fichiers xslx