Open XML pour les fichiers DOCX
1 OpenXmlWord_CreateFile
Prototype : string OpenXmlWord_CreateFile(fichier)
Crée un nouveau fichier docx MS Word.
Paramètres :
1 fichier A ;nom du fichier à créer
Renvoie :
0 - si pas d'erreur
2 OpenXmlWord_OpenFile
Prototype : string OpenXmlWord_OpenFile(fichier)
Ouvre un fichier docx MS Word déjà éxistant
Paramètres :
1 fichier A ;nom du fichier
Renvoie :
0 - si pas d'erreur
3 OpenXmlWord_CloseFile
Prototype : int OpenXmlWord_CloseFile
Ferme le fichier docx en cours , les modification sont aussi sauvegardées
4 OpenXmlWord_CreateParagraph
Prototype : string OpenXmlWord_CreateParagraph(justif,breakdoc)
Création d’un paragraphe
Paramètres :
1 justif x = 0 ; justif 0 ou 1(à gauche) 2(centré) 3(à droite) 4(justifié)
1 breakdoc x = 0 ; 1 indique qu’il faut faire une fin de document
Renvoie :
0 - si pas d'erreur
5 OpenXmlWord_InsertText
Prototype : string OpenXmlWord_InsertText(texte)
Ajoute le texte dans le paragraphe en cours
Paramètres :
1 texte A ;texte
Renvoie :
0 - si pas d'erreur
6 OpenXmlWord_InsertFile
Prototype : int OpenXmlWord_ InsertFile(fichier, extension ,justif, breakdoc)
Changement de la taille d'une colonne (unité de mesure Excel, 10 par défaut).
Paramètres :
1 fichier A ;nom du fichier
1 extension 32 = " " ;par défaut le type de fichier est pris selon l’exention du fichier
;mais on peut définir une extension, c’est dans le cas que fichier
;contiendrais un nom de fichier temporaire, l’extension tmp n’indique
;pas le type du fichier , on peut mettre ici ‘png’ si c’est une image png
1 justif x = 0 ; justif 0 ou 1(à gauche) 2(centré) 3(à droite) 4(justifié)
1 breakdoc x = 0 ; 1 indique qu’il faut faire une fin de document
Les types de fichiers connuent sont uniquement
jpg ou jpeg ou png pour les images
Txt pour une simple suite de texte ligne à ligne
Rtf pour un fichier de type rtf
Docx pour un fichier docx MS Word
Htm ou html pour un fichier au format html
Xml pour un fichier de donnée au format xml
Renvoie :
0 - si pas d'erreur
7 OpenXmlWord_Replace
Prototype : int OpenXmlWord_Replace(cherche,remplace,ancrage)
Cherche et remplace un texte par un autre dans le fichier MS Word en cours
Paramètres :
1 cherche A ;chaîne à chercher
1 remplace A ;remplacer par
1 ancrage x = 0 ;création ou pas d’un nouveau paragraphe à la suite
;du paragraphe qui contiens la chaîne à chercher
; en mode sans ancrage , cette fonction renvoi le nombre de remplacement
; si ancrage = 0 ,cette fonction cherche et remplace toutes les occurences et renvoi le nombre de modifications faites
; si ancrage = 1 ,cette fonction renvoi 1 à chaque fois qu'elle rencontre la valeur 'cherche', il faut donc boucler tant que cette fonction renvoi 1
; à la fin , quand il n'y a plus de texte, le retour vaut 0
;ce mode permet de s'arrêter après chaque texte pour pouvoir insérer un fichier (cf OpenXmlWord_InsertFile , cela crée un paragraphe a la suite)
;ou pour créer paragraphe à la suite du texte (cf OpenXmlWord_CreateParagraph et OpenXmlWord_InsertText, cela crée un paragraphe a la suite )
; si ancrage = 2 ,alors le champ 'cherche' doit contenir le nom d'un champ de formulaire ou de publipostage
; le champ 'remplace' n'est pas utilisé, il n'y a pas de modification du contenu du champ formulaire ou de
;publipostage ce mode permet de s'arrêter apres un champ pour pouvoir insérer un fichier (cf OpenXmlWord_InsertFile, cela crée un paragraphe a la suite )
; ou pour créer paragraphe à la suite du texte (cf OpenXmlWord_CreateParagraph et OpenXmlWord_InsertText, cela crée un paragraphe a la suite )
1 cherche A ;texte a chercher ou nom du champ
1 remplace A ;texte de remplacement , en mode champ cette valeur n'est pas traitée
1 ancrage x = 0 ;type d'ancrage 0 1 ou 2
beginf
Renvoie :
voir selon le type d’ancrage
Exemple
OpenXml_Begin
err = OpenXmlWord_OpenFile(left(fichier))
if err = 0
trouver = OpenXmlWord_Replace("Monsieur","Texte De Remplacement",false)
do
trouver = OpenXmlWord_Replace("suitepublipostagebody","",true)
while trouver = 1
OpenXmlWord_InsertFile("c:\divalto\acrylique1.png")
;OpenXmlWord_CreateParagraph(3,0)
;OpenXmlWord_InsertText("test_remp2");
wend
do
trouver = OpenXmlWord_Replace("suitepublipostagehautdepage","",true)
while trouver = 1
OpenXmlWord_InsertFile("c:\divalto\hautdepage.jpg")
;OpenXmlWord_CreateParagraph(3,0)
;OpenXmlWord_InsertText("test_remp2");
wend
do
trouver = OpenXmlWord_Replace("suitepublipostagebasdepage","",true)
while trouver = 1
OpenXmlWord_InsertFile("c:\divalto\basdepage.png")
;OpenXmlWord_CreateParagraph(3,0)
;OpenXmlWord_InsertText("test_remp2");
wend
;do
; trouver = OpenXmlWord_Replace("suitepublipostage","",true)
;while trouver = 1
; OpenXmlWord_InsertFile("c:\divalto\ademortf.rtf")
; OpenXmlWord_InsertFile("c:\divalto\acrylique1.png")
; OpenXmlWord_InsertFile("C:\divalto\amapi_modehtml.htm")
; OpenXmlWord_InsertFile("c:\divalto\agrmservices.docx")
; OpenXmlWord_CreateParagraph(3,0)
; OpenXmlWord_InsertText("salut|sur|3ligne");
; wend
OpenXmlWord_CloseFile
endif
8 OpenXmlWord_WriteCustomDocumentPropertiesWriter
public function int OpenXmlWord_WriteCustomDocumentPropertiesWriter(prop,valeur,type)
; écriture d'une propriété custom dans un fichier docx
; renvoi 0 si pas d'erreur
1 prop A ;nom de la propriété
1 valeur A ;valeur , si c'est une date elle doit être au format AAAAMMJJ ou AAAAMMJJHHMMSS , si c'est un bouléin ce doit être 0 ou 1
1 type A ;type "Text" "Date" "Num" (num. convertie double) "Int" (num. convertie en entier) "Bool" (0 ou 1 )
1 param S
1 retour S
beginf
9 OpenXmlWord_WriteBuiltinDocumentPropertiesWriter
public function int OpenXmlWord_WriteBuiltinDocumentPropertiesWriter(prop,valeur)
; Ecrit une propriété standard dans le fichier docx
; avec prop => "Title" "Author" "Comments" "Keywords" "Subject"
1 prop A ;Propriété
1 valeur A ;Valeur
1 param S
1 retour S
beginf
err = OpenXmlWord_OpenFile(left(fic))
if err = 0
valeur = "xxxx"
OpenXmlWord_WriteCustomDocumentPropertiesWriter("DEROGNO",left(valeur),"Text")
OpenXmlWord_WriteBuiltinDocumentPropertiesWriter("Title","coucou c'est le titre")
OpenXmlWord_WriteBuiltinDocumentPropertiesWriter("Author","coucou c est moi")
OpenXmlWord_CloseFile
endif
10 OpenXmlWord_ModifyValueMaillingField
public function char OpenXmlWord_ModifyValueMaillingField(docpropertyfind,propname,propvalue)
1 docpropertyfind A ;exemple DOCPROPERTY ou MERGEFIELD
1 propname A
1 propvalue A
1 param S
1 retour S
beginf
Exemple
err = OpenXmlWord_OpenFile(left(fichierorigine))
if err = 0
valeur = "demo" & time(8)
OpenXmlWord_WriteCustomDocumentPropertiesWriter("DEROGNO",left(valeur),"Text")
valeur = "demo" & time(7)
OpenXmlWord_WriteCustomDocumentPropertiesWriter("DEROGIDENT",left(valeur),"Text")
OpenXmlWord_CloseFile
endif
OpenXml_End
Attention, ce qui est modifié concerne uniquement les propriétés du FICHIER/DOCUMENT WORD, pas une éventuelle utilisation de ces propriétés à l’intérieur du document
Par exemple dans cette capture, on voit une utilisation des propriétés du document via le mot clé DOCPROPERTY
Si vous avez des propriétés susceptibles d'être aussi dans le document alors il faut aussi ajouter la recherche et le remplacement de ces propriétés de type DOCPROPERTY dans tout le document
valeur = "demo" & time(8)
OpenXmlWord_WriteCustomDocumentPropertiesWriter("DEROGNO",left(valeur),"Text")
retour = OpenXmlWord_ModifyValueMaillingField("DOCPROPERTY","DEROGNO",left(valeur))
valeur = "demo" & time(7)
OpenXmlWord_WriteCustomDocumentPropertiesWriter("DEROGIDENT",left(valeur),"Text")
retour = OpenXmlWord_ModifyValueMaillingField("DOCPROPERTY","DEROGIDENT",left(valeur))
Ce qui viendra bien remplacer les mot-clés
- 1 1 OpenXmlWord_CreateFile
- 2 2 OpenXmlWord_OpenFile
- 3 3 OpenXmlWord_CloseFile
- 4 4 OpenXmlWord_CreateParagraph
- 5 5 OpenXmlWord_InsertText
- 6 6 OpenXmlWord_InsertFile
- 7 7 OpenXmlWord_Replace
- 8 8 OpenXmlWord_WriteCustomDocumentPropertiesWriter
- 9 9 OpenXmlWord_WriteBuiltinDocumentPropertiesWriter
- 10 10 OpenXmlWord_ModifyValueMaillingField