IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Ajouter un colonne dans un fichier XLSX [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Par défaut Ajouter un colonne dans un fichier XLSX
    Bonjour à tous,

    J'ai un fichier ".xlsx" dont je souhaiterais modifier l'en-tête, ajouter une colonne et exporter en CSV.
    J'arrive bien à modifier mes colonnes d'en-tête et à exporter en CSV, par contre je bloque sur l'insertion d'une colonne.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    $fichierXLSX = "C:\test.xlsx"
    $fichierexportCSV = "C:\test.csv"
    
    #Chargement des propriétés Excel
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel") | Out-Null
    $FormatCSV = [Enum]::Parse([Microsoft.Office.Interop.Excel.XlFileFormat], "xlCSVWindows");
    $Excel=new-object -ComObject "Excel.Application"
    $Excel.Visible=$Visible
    $Excel.Application.DisplayAlerts = $False
    
    Write-Host "Ouverture du fichier Excel..."
    $WorkBook = $Excel.Workbooks.Open($fichierXLSX)
    
    Write-Host "Modification du fichier Excel..."
    $WorkSheet = $WorkBook.worksheets.Item(1)
    $WorkSheet.Columns.ListObject.ListColumns.Add(9)
    $WorkSheet.Cells.Item(1,1) ='matricule'
    $WorkSheet.Cells.Item(1,2) ='Nom'
    $WorkSheet.Cells.Item(1,3) ='Prénom'
    $WorkSheet.Cells.Item(1,4) ='structure rattach.'
    $WorkSheet.Cells.Item(1,5) ='n° structure rattach.'
    $WorkSheet.Cells.Item(1,6) ='adresse'
    $WorkSheet.Cells.Item(1,7) ='code postal'
    $WorkSheet.Cells.Item(1,8) ='ville'
    $WorkSheet.Cells.Item(1,9) ='direction'
    $WorkSheet.Cells.Item(1,10) ='fonction'
    $WorkSheet.Cells.Item(1,11) ='email'
    $WorkSheet.Cells.Item(1,12) ='tel fixe'
    $WorkSheet.Cells.Item(1,13) ='tel portable'
    $WorkSheet.Cells.Item(1,14) ='fax'
    $WorkSheet.Cells.Item(1,15) ='nom manager'
    $WorkSheet.Cells.Item(1,16) ='prenom manager'
    $WorkSheet.Cells.Item(1,17) ='ff'                 
    
    Write-Host "Sauvegarde du fichier Excel..."
    $WorkBook.Save()
    
    Write-Host "Export du fichier Excel en CSV..."
    $WorkBook.SaveAs($fichierexportCSV,$FormatCSV)
    
    Write-Host "Fermeture du fichier Excel..."
    $WorkBook.Close()
    
    Write-Host "Fermeture de Excel."
    $Excel.Quit() | Out-Null
    J'ai un problème avec la ligne 16 "$WorkSheet.Columns.ListObject.ListColumns.Add(9)", j'obtiens le message d'erreur suivant :
    Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
    + $WorkSheet.Columns.ListObject.ListColumns.Add <<<< (9)
    + CategoryInfo : InvalidOperation: (Add:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    En vous remerciant pour l'aide que vous pourrez m'apporter.

    misterg94

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Par défaut
    Je me réponds à moi-même....

    J'ai remplacé ma ligne 16 "$WorkSheet.Columns.ListObject.ListColumns.Add(9)" par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $objRange = $Excel.Range("I1").EntireColumn 
    [void] $objRange.Insert($xlShiftToRight)
    Cela fonctionne bien.

    Source :
    https://gallery.technet.microsoft.co...f-9583c16ad308

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'une colonne dans un fichier csv
    Par sorilazer dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 12/11/2012, 18h08
  2. Ajout de colonne dans fichiers csv
    Par ze_mechant dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/07/2012, 15h45
  3. [Toutes versions] Ajouter une colonne dans un fichier dbf à partir d'ACCESS
    Par loufab dans le forum Contribuez
    Réponses: 2
    Dernier message: 13/05/2012, 13h07
  4. Ajout d'une colonne dans un fichier
    Par mimi7344 dans le forum MATLAB
    Réponses: 5
    Dernier message: 20/09/2011, 10h26
  5. Ajout de texte dans un fichier
    Par willowII dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 24/08/2004, 19h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo