Flash info

"La connaissance ce n’est point la possession de la vérité, mais d’un langage cohérent."

Antoine de Saint Exupéry (1900-1944)

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
unfam0us
Utilisateur

PowerShelleur Amateur
Messages: 50
graphgraph
Karma: 0  
Tuto fiche serveur avec word - 16/12/10 10:53 Bonjour,

Je rencontre un problème pour suivre ce tuto
http://scriptingof.blogspot.com/2009/01/creation-de-fiche-serveur-avec-word.html

J'ai pus installer OpenXml SDK 1.0 mais ensuite il demande d'installer les PowerTools, j'ai donc téléchargé les sources données ici:
http://powertools.codeplex.com/

Sur le tuto il donne la marche à suivre suivante:

Pour installer les PowerTools, vous aurez besoin des sources et de les compiler avec Visual C# Express par exemple pour générer la DLL… Ou bien, récupérer celle que j’ai générée pour vous ici…

Pour l’installation, dans une fenêtre PowerShell :

PS> cd C:WindowsMicrosoft.NETFramework64v2.0.50727
PS> .InstallUtil.exe C:OpenXml.PowerTools.dll
PS> Add-PSSnapin OpenXml.PowerTools


Mais je n'ai pas de fichier nommé OpenXml.PowerTools.dll je n'ai que ce fichier avec l'extension xml: "OpenXml.PowerTools.dll-Help.xml".

Il parle de compiler mais je n'ai pas la moindre idée de comment compiler ces sources, y'à il un autre moyen que de compiler?

Merci

Message édité par: unfam0us, à: 8/02/11 10:08
  | | L'administrateur a désactivé l'accés public en écriture.
unfam0us
Utilisateur

PowerShelleur Amateur
Messages: 50
graphgraph
Karma: 0  
Re:Tuto fiche serveur avec word - 21/12/10 08:07 UP
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Tuto fiche serveur avec word - 21/12/10 09:47 Il semble bien qu'il n'y ait pas d'autre solution que de compiler le source pour avoir la DLL en question.

L'auteur du billet laisse entendre qu'il fournit une version compilée par ses soins, mais son billet ne contient aucun lien vers son fichier. Par contre il donne un lien vers Visual C# Express que tu peux installer gratuitement, et qui te permettra de compiler la DLL. Mais la manip n'est pas super simple si on n'a jamais fait de développement, et même si on en a fait mais qu'on n'est pas habitué à l'environnement Visual Studio.

J'avais écrit un rapide tuto sur le sujet de compiler une DLL pour l'utiliser dans PowerShell, c'était il y a des années. Il faudra que je recherche ça dans mes archives.

Sinon, pour utiliser Word 2007 dans PowerShell tu n'as pas spécialement besoin d'OpenXML ni des PowerTools : tu peux utiliser son objet COM, à la condition évidemment que Word soit installé sur la machine qui exécute ton script PowerShell.

J'ai également écrit une série d'articles sur le sujet, tu peux les trouver sur mon blog http://janel.spaces.live.com/blog, par exemple :

http://janel.spaces.live.com/blog/cns!9B5AA3F6FA0088C2!321.entry
  | | L'administrateur a désactivé l'accés public en écriture.
unfam0us
Utilisateur

PowerShelleur Amateur
Messages: 50
graphgraph
Karma: 0  
Re:Tuto fiche serveur avec word - 23/12/10 08:31 Merci super ton blog

J'avais déjà vu quelque article concernant le pilotage de word. Mais mon but dans les document que je traite est de faire un document dans lequel j'envoie le résultat de la commandlet et ensuite d'y ajouter toujours via powershell un pied de page un titre etc. afin de faire quelque chose de propre.

Je n'ai rien trouvé de cela avec les objet com de word, si tu as quelque chose à me proposer je suis preneur car je trouve la solution de l'openXML un peu compliqué?!

Mercii
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Tuto fiche serveur avec word - 23/12/10 11:43 Tu peux faire tout ça avec l'objet COM. En gros, tout ce que tu pourrais faire dans Word, tu peux le reproduire par des appels à l'objet COM.

Voici un exemple très sommaire qui crée un document Word avec une ligne "Liste des process" en Arial 10 suivie par le résultat de la commande "get-process" en Consolas 10. Pour le fun, j'ai ajouté la numérotation des pages en pied de page.

Code:

  $word = new-object -com word.application $doc $word.documents.add() $doc.content.font.name "Consolas" $doc.content.font.size 10 $doc.content.text "Liste des process :" $doc.paragraphs.item(1).insertparagraphafter() $doc.Paragraphs.item(2).range.text = (get-process out-string) $doc.content.paragraphs.item(1).range.font.name "Arial" $doc.sections.item(1).footers.item(3).pagenumbers.add() > $null $doc.saveas([ref]"$($pwd.path)\fiche.doc") $doc.close() $word.quit()



Message édité par: janel, à: 23/12/10 11:43
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Tuto fiche serveur avec word - 23/12/10 13:52 Petite amélioration de mon exemple (et correction d'une ou deux coquilles au passage). Cette fois-ci j'applique à la première ligne "Liste des process" le style "Titre 2", ce qui permettra une meilleure cohérence du document si son contenu est amené à s'étoffer.

Code:

  $word = new-object -com word.application $doc $word.documents.add() $pn $doc.sections.item(1).footers.item(3).pagenumbers.add() $doc.content.text "Liste des process" $doc.content.paragraphs.item(1).style $doc.styles.item("Titre 2") $doc.content.insertparagraphafter() $doc.Paragraphs.item(2).range.font.name "Consolas" $doc.Paragraphs.item(2).range.font.size 10 $doc.Paragraphs.item(2).range.text = (get-process out-string) $doc.saveas([ref]"$($pwd.path)\fiche.doc") $doc.close()

  | | L'administrateur a désactivé l'accés public en écriture.
unfam0us
Utilisateur

PowerShelleur Amateur
Messages: 50
graphgraph
Karma: 0  
Re:Tuto fiche serveur avec word - 11/01/11 14:21 Merci beaucoup du temps que tu as pris pour répondre, ça me rendra service, ou as-tu trouver ces propriétés afin que je puisse à mon tour me documenter?

Merci

Message édité par: unfam0us, à: 11/01/11 14:21
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Tuto fiche serveur avec word - 13/01/11 13:41 La référence, d'une manière générale, c'est MSDN :

http://msdn.microsoft.com

En général également, je fais mes recherches sur MSDN en précisant que je veux les résultats dans "United States (English)" (menu déroulant en haut à droite de la page MSDN). Sinon, le site me retourne un tas de pages venant des forums de discussion Microsoft, sans doute très intéressants mais souvent hors sujet.

Pour une recherche sur la programmation de l'objet COM Word, je tape "word.application", et dans les premiers résultats j'ai les bonnes pages.

En l'occurrence, pour Word 2007 :

http://msdn.microsoft.com/en-us/library/bb244391(v=office.12).aspx

Et pour Word 2003 :

http://msdn.microsoft.com/en-us/library/kw65a0we(VS.80).aspx

Pour voir si une page en particulier est accessible en français, tu peux toujours remplacer "en-us" par "fr-fr" dans son URL.
  | | L'administrateur a désactivé l'accés public en écriture.
unfam0us
Utilisateur

PowerShelleur Amateur
Messages: 50
graphgraph
Karma: 0  
Re:Tuto fiche serveur avec word - 14/01/11 08:21 Okay merci beaucoup pour ces explications, je faisais l'erreur de laisser les recherches en français.

Me reste plus qu'à apprendre à exploiter la doc MSDN (pas facile)

Bonne journée merci

Message édité par: unfam0us, à: 14/01/11 08:43
  | | L'administrateur a désactivé l'accés public en écriture.
unfam0us
Utilisateur

PowerShelleur Amateur
Messages: 50
graphgraph
Karma: 0  
Re:Tuto fiche serveur avec word - 8/02/11 10:05 Rebonjour,

Je UP le sujet car je ne trouve pas la solution pour ajouter deux pied de page différent.

Exemple ajouter la date à gauche et le nom du document au centre du pied de page.

Pour la date tout vas bien:
Code:

 $doc.sections.item(1).footers.item(1).range.text = (get-date)



Mais pour le nom du document je n'arrive pas à en mettre un deuxième, que faut il modifier? J'ai tenter item(2) mais il ne me le considère pas:
Code:

 $doc.sections.item(1).footers.item(2).range.text "TEST"



J'ai bien trouvé ceci dans la doc MSDN:
http://msdn.microsoft.com/fr-fr/library/ms178795.aspx
Mais je n'arrive pas à le passer en Powershell, si vous auriez des conseils à me donner pour adapter le VB ou le C# en PS je vous serais fort reconnaissant

Merci d'avance

Message édité par: unfam0us, à: 10/02/11 10:32
  | | L'administrateur a désactivé l'accés public en écriture.
Matthew BETTON
Utilisateur

PowerShelleur Platinum
Messages: 966
graphgraph
Karma: 60  
Re:Tuto fiche serveur avec word - 14/02/11 09:08 Bonjour,

Tu peux essayer ça :

Code:

 $date get-date $pn $doc.sections.item(1).footers.item(1).range.text "$date`t[TEST]"



Pour en plus ajouter un numéro de page à droite :

Code:

 $pn $doc.sections.item(1).footers.item(3).pagenumbers.add()




L'item(2) n'existe pas.

Pour faire un footer en 3 colonnes :

Code:

 $pn $doc.sections.item(1).footers.item(1).range.text "[GAUCHE]`t[CENTRE]`t[DROITE]"



`t est le caractère spécial qui permet de faire une tabulation dans une chaine de caractère. Lorsque tu ouvriras le doc, tu découvriras que les éléments sont à l'endroit souhaité

En espérant que cela t'aidera ... Enjoy

@ +

Matthew

Message édité par: Matthew BETTON, à: 14/02/11 09:09
  | | L'administrateur a désactivé l'accés public en écriture.
Matthew BETTON
Utilisateur

PowerShelleur Platinum
Messages: 966
graphgraph
Karma: 60  
Re:Tuto fiche serveur avec word - 14/02/11 09:13 Matthew BETTON écrit:
Bonjour,

Tu peux essayer ça :

Code:

 $date get-date $pn $doc.sections.item(1).footers.item(1).range.text "$date`t[TEST]"



Pour en plus ajouter un numéro de page à droite :

Code:

 $pn $doc.sections.item(1).footers.item(3).pagenumbers.add()




L'item(2) n'existe pas.

Pour faire un footer en 3 colonnes :

Code:

 $pn $doc.sections.item(1).footers.item(1).range.text "[GAUCHE]`t[CENTRE]`t[DROITE]"



`t est le caractère spécial qui permet de faire une tabulation dans une chaine de caractère. Lorsque tu ouvriras le doc, tu découvriras que les éléments sont à l'endroit souhaité

En espérant que cela t'aidera ... Enjoy

@ +

Matthew<br><br>Message édité par: Matthew BETTON, à: 14/02/11 09:09


P.S. : les crochets "[ / ]" ne sont pas nécessaires...
  | | L'administrateur a désactivé l'accés public en écriture.
© 2017 PowerShell-Scripting.com