Question formatage de fichiers Excel (2010) avec Powershell (5.1)

Plus d'informations
il y a 1 an 10 mois #32384 par MONNOT
Bonjour ,

Je suis en train de développer un script Powershell pour manipuler des fichiers Excel et les exporter ensuite en PDF.
J'arrive a alimenter ma feuille Excel, à mettre en forme le tableau (largeur des colonnes, bordures) avec les commandes ci dessous :
####### bordures ######
$range = $ws.range("A12:H19")
$range.Borders.LineStyle = [Microsoft.Office.Interop.Excel.XlLineStyle]::xlContinuous
$range.Borders.Weight = 2

####### alignement des cellules ######
$range = $ws.range("D1")
$range.HorizontalAlignment = [Microsoft.Office.Interop.Excel.XlHAlign]::xlHAlignCenter

Par contre je souhaiterais changer les marges de la feuille (par défaut le classeur est créé avec des marges normales). 
Existe t'il une commande du genre "Microsoft.Office.Interop.Excel" qui permet de manipuler les marges ? Je n'arrive pas à trouver comment faire malgré pas mal de recherches sur le MSDN et autres sites.

Merci pour l'aide (vous l'aurez compris je ne suis pas développeur, plutôt débutant en Powershell, par nécessité !)

 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 10 mois - il y a 1 an 10 mois #32385 par Laurent Dardenne
Salut,
je n'ai pas de réponse à te proposer, dans ces cas je recherche des exemples de code C# : c# excel horizontalalignment

Autre piste : crée une macro en modifiant la marge et vérifie le code VBA.

Tutoriels PowerShell
Dernière édition: il y a 1 an 10 mois par Laurent Dardenne. Raison: coquille

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 10 mois #32388 par MONNOT
Merci pour la réponse, pour le VBA compliqué car ce sont des fichiers Excel créés par un ETL externe.
Pour le c# je ne maitrise pas du tout. Je ne sais pas du tout comment l'intégrer dans mon script PowerShell. Les fonctions (je ne sais pas si c'est le bon terme) HorizontalAlignment que j'utilise alignent le texte dans les cellules excel (ça, ça fonctionne) ce que je veux, ce n'est pas centrer le tableau sur la feuille mais réduire le nombre de cm des marges haut / bas etc.
J'ai peut être une piste avec Microsoft.Office.Interop.Excel.TextFrame mais je ne trouve pas comment l'utiliser (j'ai pas posté dans la catégorie débitant pour rien ;-))

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 9 mois #32390 par Philippe
Salut

j'ai  trouvé ceci :
$Myexcel = New-Object -ComObject excel.application

$Myexcel.visible = $true
$Myworkbook = $Myexcel.workbooks.add()

$Sheet1 = $Myworkbook.worksheets.item(1)
$Sheet1.name = "Power"

$Sheet1.cells.item(1,1) = 'NAME'
$Sheet1.cells.item(1,2) = 'POWERSHELL'

$Sheet1.PageSetup.LeftMargin = $Myexcel.CentimetersToPoints(2)  # valeur en centimetre
$Sheet1.PageSetup.RightMargin = $Myexcel.CentimetersToPoints(2)
$Sheet1.PageSetup.TopMargin = $Myexcel.CentimetersToPoints(2)
$Sheet1.PageSetup.BottomMargin = $Myexcel.CentimetersToPoints(2)

$Myfile = 'C:\temp\example.xlsx'
$Myexcel.displayalerts = $false
$Myworkbook.Saveas($Myfile)
$Myexcel.displayalerts = $true

je te laisse adapter à tes variables !  :) 
Les utilisateur(s) suivant ont remercié: MONNOT

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 9 mois #32394 par MONNOT
Nickel, c'est exactement ce qu'il me fallait, merci.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.071 secondes
Propulsé par Kunena