Ci joint des méthodes à ajouter à la classe fournie avec Windev pour piloter OpenOffice :
1- Ouverture d'un document type et mise à disposition dans un fichier TXT des champs de fusion insérables
Code : Tout sélectionner
PROCEDURE OuvreDocType(psCheminComplet,DataTxt)
mNoArgs est un tableau de 1 objet Automation dynamique
res_Trait est un booléen
sCheminFormaté est une chaîne
NomSource,CheminODB est une chaîne
oInfo est un tableau de 1 objet Automation dynamique
iInfoBase est un tableau de 5 objet Automation dynamique
// Service manager nécessaire à OpenOffice
:DémarrerService()
mNoArgs[1] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
mNoArgs[1]>>Name = "Overwrite"
mNoArgs[1]>>Value = True
oInfo[1] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
SI fFichierExiste(psCheminComplet) ALORS
// Formatage du chemin du fichier
sCheminFormaté = TransFicOo(psCheminComplet)
// Ouverture du fichier dans OpenOffice Writer
:oDocument = :oDesktop>>LoadComponentFromURL(sCheminFormaté, "_blank", 0, oInfo)
/// Création source de données
SI :oDocument<>Null ALORS
NomSource="MaBase"
:oDBContexte = :oServiceManager>>createInstance("com.sun.star.sdb.DatabaseContext")
SI :oDBContexte>>hasByName(NomSource) ALORS
:oDBContexte>>revokeObject(NomSource)
FIN
CheminODB=TransFicOo(fRepEnCours()+"\"+"MaBase.ODB")
:uneInstance = :oDBContexte>>createInstance()
:nomDocBase = :uneInstance>>DatabaseDocument
:nomDocBase>>storeAsURL(CheminODB,mNoArgs)
:nomDocBase>>info = mNoArgs
:oDBContexte>>registerObject(NomSource,:uneInstance)
:uneInstance>>URL="sdbc:flat:"+TransFicOo(fRepEnCours())
iInfoBase[1]= :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
iInfoBase[1]>>Name = "HeaderLine"
iInfoBase[1]>>Value = True
iInfoBase[2]= :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
iInfoBase[2]>>Name = "FieldDelimiter"
iInfoBase[2]>>Value = ";"
iInfoBase[3]= :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
iInfoBase[3]>>Name = "StringDelimiter"
iInfoBase[3]>>Value = "''" //un guillemet
iInfoBase[4]= :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
iInfoBase[4]>>Name = "DecimalDelimiter"
iInfoBase[4]>>Value = ","
iInfoBase[5]= :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
iInfoBase[5]>>Name = "Extension"
iInfoBase[5]>>Value = "txt"
:uneInstance>>info = iInfoBase
:nomDocBase>>store()
RENVOYER Vrai
FIN
FIN
RENVOYER Faux
Code : Tout sélectionner
FONCTION Mailing(nomDoc,libdoc)
NomSource,DocumentModele,RepertoireCible,NomTable,NomChampTitreFichier est une chaîne
MyProps est un tableau de 0 Variant
// Service manager nécessaire à OpenOffice
:DémarrerService()
NomSource="MaBase"
DocumentModele=TransFicOo(DocType)
RepertoireCible=TransFicOo(CHEMCOURRIER)
NomTable="ChampsDeFusion"
NomChampTitreFichier=" :bravo: "
:MonPublipostage= :oServiceManager>>createInstance("com.sun.star.text.MailMerge")
:MonPublipostage>>DataSourceName=NomSource
:MonPublipostage>>DocumentURL=DocumentModele
:MonPublipostage>>CommandType=0
:MonPublipostage>>Command=NomTable
:MonPublipostage>>OutputType=2
:MonPublipostage>>OutputUrl=RepertoireCible
:MonPublipostage>>FileNameFromColumn=False
:MonPublipostage>>FilenamePrefix=libdoc
:MonPublipostage>>SaveAsSingleFile=True //1 seul fichier
:MonPublipostage>>execute(MyProps)
Merci encore à tout ceux qui m'ont permis d'arriver au bout avec leurs infos ou remarques en espérant que ce travail de recherche dépannera d'autres personnes dans mon cas