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

 

 

image-20240709-093236.png