Manipuler Excel avec PowerShell : Part 1 – Créer un classeur, un feuillet et un tableau

Dans cette série d’articles, je vais vous montrer les bases pour générer un fichier Excel à l’aide de PowerShell.

Au préalable et surtout afin d’éviter d’obtenir une erreur de type « Old format or invalid type library » (http://support.microsoft.com/kb/320369), nous allons définir les informations culturelles sur l’anglais avant d’instancier Excel :

{codecitation style= »brush: PowerShell »}

[System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo] « en-US »

{/codecitation}

 

Nous pouvons, dès-lors, instancier notre objet Excel :

{codecitation style= »brush: PowerShell »}

$Excel = New-Object -ComObject « Excel.Application »

{/codecitation}


Avec notre objet Excel, nous allons créer notre classeur:

{codecitation style= »brush: PowerShell »}

$WorkBook = $Excel.Workbooks.Add()

{/codecitation}


Un classeur étant constitué de feuillets, ajoutons maintenant un feuillet:

{codecitation style= »brush: PowerShell »}

$WorkSheet = $WorkBook.WorkSheets.Add()

{/codecitation}

 

Donnons-lui un nom :

{codecitation style= »brush: PowerShell »}

$WorkSheet.Name = « Production de bananes »

{/codecitation}

 

Définissons le titre de notre futur tableau en position A1 :

{codecitation style= »brush: PowerShell »}

$WorkSheet.Cells.Item(1,1) = « Production annuelle de bananes »

{/codecitation}

 

Remarque : Le premier chiffre correspond au numéro de ligne et le deuxième chiffre au numéro de colonne.

 

Maintenant, nous allons créer notre tableau Excel. Mais, pour cela, on va déjà commencer par stocker les éléments de notre tableau:

{codecitation style= »brush: PowerShell »}

$ArrProduction = @((‘2010’,’4.5’),(‘2011’,’12’),(‘2012’,’11.5’),(‘2013’,’15’))

{/codecitation}

 

Nous déclarons les entêtes de notre tableau :

{codecitation style= »brush: PowerShell »}

$WorkSheet.Cells.Item(3,1) = « Année »

$WorkSheet.Cells.Item(3,2) = « Production (en tonnes) »

{/codecitation}

 

… et les données :

{codecitation style= »brush: PowerShell »}

$WorkSheet.Cells.Item(4,1) = $ArrProduction[0][0]

$WorkSheet.Cells.Item(4,2) = [decimal] $ArrProduction[0][1]

$WorkSheet.Cells.Item(5,1) = $ArrProduction[1][0]

$WorkSheet.Cells.Item(5,2) = [decimal] $ArrProduction[1][1]

$WorkSheet.Cells.Item(6,1) = $ArrProduction[2][0]

$WorkSheet.Cells.Item(6,2) = [decimal] $ArrProduction[2][1]

$WorkSheet.Cells.Item(7,1) = $ArrProduction[3][0]

$WorkSheet.Cells.Item(7,2) = [decimal] $ArrProduction[3][1]

{/codecitation}


Un autre méthode pour alimenter les cellules plus efficacement, dirons-nous…

{codecitation style= »brush: PowerShell »}

$InitialRow = 4

for ( $i=0; $i -lt $ArrProduction.Count; $i++ )

{

$WorkSheet.Cells.Item($InitialRow,1) = $ArrProduction[$i][0]

$WorkSheet.Cells.Item($InitialRow,2) = [decimal] $ArrProduction[$i][1]

$InitialRow++

}

{/codecitation}

 

Pour visualiser le fichier Excel, il faut simplement saisir la commande suivante:

{codecitation style= »brush: PowerShell »}

$Excel.Visible = $true

{/codecitation}

 

Si vous voulez sauvegarder le classeur Excel :

{codecitation style= »brush: PowerShell »}

$WorkBook.SaveAs(« c:\temp\MaProductionDeBananes.xlsx »)

{/codecitation}


Et voila le résultat!

 

Et le script au complet:

{codecitation style= »brush: PowerShell »}

[System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo] « en-US »

$Excel = New-Object -ComObject « Excel.Application »

$WorkBook = $Excel.Workbooks.Add()

$WorkSheet = $WorkBook.WorkSheets.Add()

$WorkSheet.Name = « Production de bananes »

$WorkSheet.Select()

$WorkSheet.Cells.Item(1,1) = « Production annuelle de bananes »

$ArrProduction = @((‘2010’,’4.5’),(‘2011’,’12’),(‘2012’,’11.5’),(‘2013’,’15’))

 

$WorkSheet.Cells.Item(3,1) = « Année »

$WorkSheet.Cells.Item(3,2) = « Production (en tonnes) »


$InitialRow = 4

for ( $i=0; $i -lt $ArrProduction.Count; $i++ )

{

$WorkSheet.Cells.Item($InitialRow,1) = $ArrProduction[$i][0]

$WorkSheet.Cells.Item($InitialRow,2) = [decimal] $ArrProduction[$i][1]

$InitialRow++

}


$WorkBook.SaveAs(« c:\temp\MaProductionDeBananes.xlsx »)

$Excel.Visible = $true

{/codecitation}

 

On a vu dans ce premier article comment créer notre premier classeur, un feuillet et comment l’alimenter. Dans l’article suivant, nous nous attarderons un peu plus longuement sur la mise en forme.

Ci-dessous, les autres articles sur le sujet:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *