Exemples Open XML - Word
Exemple d’utilisation des fonctions OpenXmlWord_ dans un publipostage
procedure demopublipostage(preview)
1 preview n
beginp
surchargedebut ;avant de faire le publipostage on indique qu’on veut intervenir
;sur le fichier docx qui contiens le résultat du publipostage
;La fonction de publipostage va alors s’arrêter avant le fin du
;publipostage général afin d’intervenir sur le document final
ErreurOle = Office_Begin
if ErreurOle = 0
ErreurOle = Ouvre_DocMaitre(preview)
If ErreurOle = 0 ; Doc ouvert
Lignes_Data(1)
Lignes_Data(2)
Lignes_Data(3)
Office_MailingExecute(Champ_ListId,1,left(system.znomprog),"MessageOffice")
Office_MailingEnd ;Dans ce mode la fonction de publipostage ne fini pas
;totalement le traitement du fichier et rend la main
;pour que le programme diva puisse intervenir sur
;le document final avant de poursuivre la fin
;de la fonction de publipotage
Surchargefin ;a la fin du publipostage on met a jour le fichier et
;on redonne la main a la fonction de publipostage
;de yoffice
EndIf
Office_End
if Champ_ListId
ListDestroy(Champ_ListId)
endif
endif
endp
procedure surchargedebut
beginp
Office_MailingNoExecuteEnd ;je veux modifier le document final
endp
procedure surchargefin
1 fichier 260
1 trouver x = 0
1 err x = 0
Beginp
;je récupère le nom du fichier temporaire du document final du publipostage
fichier = Office_MailingGetFile
if fichier <> " " ;s’il y a eu un problème durant le publipostage
;la fonction renvoi un nom de fichier à espace
OpenXml_Begin ;ouverture du module openxml
err = OpenXmlWord_OpenFile(left(fichier)) ;chargement du fichier docx
if err = 0
;je boucle sur le mot clé $suitepublipostage$ car le publipostage
;peut donner lui à plusieurs fois le même document mais avec des champs
;différents
Do
;chercher le mot $suitepublipostage$ et remplacer le pas rien “”
;et crée un point d’encrage juste après le paragraphe qui
;contenait le mot clé $suitepublipostage$
trouver = OpenXmlWord_Replace("suitepublipostage","",1)
while trouver = 1
;on a trouvé $suitepublipostage$ et openxml à crée un point
;d’encrage après le paragraphe qui contenait $suitepublipostage$
;je peut alors indiquer a openxml de remplacer ce point d’encrage
;par le contenu d’un fichier rtf, ce qui me redonne un nouveau point
;d’encrage juste après le texte rtf
OpenXmlWord_InsertFile("c:\divalto\ademortf.rtf")
;je peut alors indiquer a openxml de remplacer ce point d’encrage
;par le contenu d’une image, ce qui me redonne un nouveau point
;d’encrage juste après l’image
OpenXmlWord_InsertFile("c:\divalto\acrylique1.jpg")
;je peut alors indiquer a openxml de remplacer ce point d’encrage
;par le contenu d’un fichier html
;attention il faut un fichier html dans un langage html simple comme
;par exemple une liste d'articles
;et si il contiend des images , le code de ces images doit être DANS la page
;html, on ne peut pas avoir une image de type chemin windows
;ou un lien http : … ) ,
; ce qui me redonne un nouveau point d’encrage juste après le texte
;html
OpenXmlWord_InsertFile("C:\divalto\amapi_modehtml.htm")
;idem pour un autre fichier docx
OpenXmlWord_InsertFile("c:\divalto\agrmservices.docx")
;sinon je peux me servir de ce point d’encrage pour crée un
;paragraphe et mettre du texte dedans
OpenXmlWord_CreateParagraph(0,0)
;le caractère | est remplacé par un saut de ligne
OpenXmlWord_InsertText("salut|sur|3ligne");
wend
OpenXmlWord_CloseFile
OpenXmlWord_CloseFile
endif
endif
Office_MailingEndNext
Endp
Avant le publipostage
Après le publipostage