IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[code] Publipostage de Word vers Open Office


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut [code] Publipostage de Word vers Open Office
    bonjour,

    voila sous word j'ai un modele (.dot) et un fichier texte avec plusieur ligne avec valeur separer par des ";" qui me permet de creer un .doc avec mes valeur integre (principe publipostage)

    le probleme c'est que j'ai besoin de realiser la meme chose avec openoffice et la je patauge total. j'ai regarder dans plusieur forum et a chaque fois , j'ai rient qui ce creer sauf des message d'exception . il y a t'il quelle part un exemple en delphi , un code pour m'aiguiller un peut?

    ps : j'arrive a ouvrir un .odt, je croit savoir comment faire pour cree un model

    ps 2 : ici il y des exemple , dont un qui cree une base open office mais mes elements sont deja dans un fichier donc pas besoin de base et quand j'essait le code il me retourne quand meme le fameux message d'exeption un message

    ps 3 : dans faq word il parle du mailing mais pas dans open office
    merci pour votre aide

  2. #2
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Bonjour,

    J'ai quelque part un code qui permet de faire un publipostage sous OOo avec des fichier CSV (séparé par ton fameux ; ) des que j'ai un peu de temp je pense que je le posterai pour qu'il soit mis dans la faq

    Mon code aussi permet la migration des .dot sous OOo sans perte de lien avec les champ fusionner de ton .dot

    C'est assez simple ... je poste ca des que je retrouve le code !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    merci de ton aide

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par titiyo Voir le message
    merci de ton aide
    Un petit alors ?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    non car je le remerci de menvoyer sont aide mais je n'est pas encore le fichier mais j'y penserait pas de souci

  6. #6
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Salut,
    je posterai ca des mon retour je suis au boulot et je n'ai pas le code sous la main

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    oui pas de pb merci

  8. #8
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Salut,

    Je n'ai pas eu le temp de m'occuper de ca hier soir

    Mais je t'ai retrouvé les post d'origine

    Essaie de voir avec ca si tu arrives a faire tous ca ...

    Sinon je te posterai ca des que j'ai du temp libre

    ICI

    et

    ICI

    Le premier lien contient ma procedure pour exécuter le mail merge

    Le second est une fonction que j'utilise dans ma conversion de modéle Word contenant des champs de fusion vers OOo
    Car comme tu as du surement le remarqué quand tu ouvre un document Word contenant des champs de fusion sous OOo le lien avec ta Source est perdu ...
    Cette fonction corrige cela (tester avec les CSV ...)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    ok merci je regarde sa de suite

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    bon bas la je n'arrive pas a le mettre en place , petite question : un .bid c'est quoi comme extention?
    et le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
          oEnum := Document.getTextFields.createEnumeration; 
          While oEnum.hasMoreElements Do 
          Begin 
           thisField := oEnum.nextElement; 
           If thisField.SupportsService('com.sun.star.text.TextField.Database') then 
           Begin 
            TFM := thisField.getTextFieldMaster; 
            TFM.DataBaseName := 'MaSource'; 
            TFM.DataTableName := 'MaTable'; 
           End; 
         End;
    remplace un code de ta premiere partir ou il faut le mettre comme cela
    pour moi un model est un .odt

    encore merci de m'aider

  11. #11
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Salut le .bid c'est une extension utilisé en interne mais ce n'est ni plus ni moins qu'un modéle word

    Ensuite le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
       oEnum := Document.getTextFields.createEnumeration; 
       While oEnum.hasMoreElements Do 
       Begin 
         thisField := oEnum.nextElement; 
         If thisField.SupportsService('com.sun.star.text.TextField.Database') then 
         Begin 
           TFM := thisField.getTextFieldMaster; 
           TFM.DataBaseName := 'MaSource'; 
           TFM.DataTableName := 'MaTable'; 
         End; 
       End;
    Ce code parcours tous les champs de fusion qui était associé a une source de donnée dans ton doc word

    car si tu remarque aprés converstion de ton .dot en modéle OOo si tu dezip ton doc OOo en parcourant les XML tu verras que le champ et le nom de la source est perdu je n'ai plus les nom en tête mais c'est a peu pret ca

    Ce code parcours l'ensemble des champs de type base de donnée afin de reassocié le Champ avec la source ceci dis il est vrai je pense que le code est pas toutes a fait complet j'essai de te trouver ca rapide ce week end il faut que j'y pense !

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    vraiment merci

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    ok j'ai esayer tout ce code et c'est vrait que le nombre document ce crée mais que les champ ne sont pas changer . dans mon doc j'ai mis des valeur lié ala table (exemple : <nom> <prenom> etc...) mais il sont visible et non remplacer . est ce bon format dans le doc ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    oEnum := Document.getTextFields.createEnumeration; 
          While oEnum.hasMoreElements Do 
          Begin 
           thisField := oEnum.nextElement; 
           If thisField.SupportsService('com.sun.star.text.TextField.Database') then 
           Begin 
            TFM := thisField.getTextFieldMaster; 
            TFM.DataBaseName := 'MaSource'; 
            TFM.DataTableName := 'MaTable'; 
           End; 
         End;
    sinon le code qui parcoure doit t'il ce mettre apres le merge execute ou avant?
    et enum, TFM,thisField je les est declarer en variant ?
    de plus il ne passe jamais dans le while comme si il ne trouvait aucun element dans mon document

    merci

  14. #14
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Salut,

    de souvenir ( j'en suis pas a 100% certain )...
    tu dois ouvrir ton .doc puis le sauvegarder au format OOo
    ensuite tu le réouvre en lui assossiant la source
    et tu execute cette fonction
    puis tu resauvegarde le document ...comme ca tu as ton modéle ....
    ensuite tu peu faire le MailMerge.Execute

    et je te confirm que oEnum, TFM, thisField sont bien des Variant

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    il ne passe j'amais sur le while comme si il ne trouvait pas mes champ c'est tres bizard????

    je suis desole de t'enbeté

  16. #16
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Cela veut dire qu'il ne trouve aucun champ de donnée dans ton document

    Ton document comporte bien des champs de fusion?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    pour moi oui j'ai cree un model.doc qui a :

    <nom> <prenom>
    <adresse>

    et c'est exactement dans la base open office les meme collonne
    mais peut tu mexpliquer
    DocumentSetting.CurrentDatabaseDataSource := 'Dossier';
    DocumentSetting.CurrentDatabaseCommand := 'Dossier';
    et
    TFM := thisField.getTextFieldMaster;
    TFM.DataBaseName := 'Dossier';
    TFM.DataTableName := 'Dossier';
    merci de ton aide

  18. #18
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Citation Envoyé par titiyo Voir le message
    pour moi oui j'ai cree un model.doc qui a :

    <nom> <prenom>
    <adresse>

    et c'est exactement dans la base open office les meme collonne
    mais peut tu mexpliquer
    DocumentSetting.CurrentDatabaseDataSource := 'Dossier';
    DocumentSetting.CurrentDatabaseCommand := 'Dossier';
    et
    TFM := thisField.getTextFieldMaster;
    TFM.DataBaseName := 'Dossier';
    TFM.DataTableName := 'Dossier';
    merci de ton aide
    En ce qui concerne
    DocumentSetting.CurrentDatabaseDataSource := 'Dossier'; <= Cette ligne défini la source de donnée actuel utilisé par le document dans cette exemple c'est la source de donnée appellé Dossier
    DocumentSetting.CurrentDatabaseCommand := 'Dossier';<= Cette ligne défini la "Command" c'est a dire la Table/Requete utilisé dans le document.

    En d'autre terme Si ta source de donnée s'appelle TEST et que la table s'appelle Table1

    tu dois mettre
    DocumentSetting.CurrentDatabaseDataSource := 'TEST';
    et
    DocumentSetting.CurrentDatabaseCommand := 'Table1';

    et pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TFM := thisField.getTextFieldMaster;
    TFM.DataBaseName := 'Dossier';
    TFM.DataTableName := 'Dossier';
    c'est assez simple tu réatribut le Nom de l abase et le nom de la table a chaque champs de fusion trouvé dans ton document

    En espérant que ca t'aide

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 114
    Points : 67
    Points
    67
    Par défaut
    bon sa avance en faite je me plantais dans les declaration je passe maintenant dans le while mais au resultat j'ai rien les champs sont a priorie blanc

    il y a un moyent de regarder ce que retourne :
    TFM := thisField.getTextFieldMaster;
    TFM.DataBaseName := 'MySourceDossier1.odb';
    TFM.DataTableName := 'Dossier';

    vraiment merci de ton aide car sans toi je serait au debut

  20. #20
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Déja
    TFM.DataBaseName := 'MySourceDossier1.odb';
    doit être égale au nom de ta base de donnée sous OOo !
    Ce que tu met la est son nom physique

    Quand tu fais F4 sous OOo quel nom de Source de donnée vois tu ?
    Il faut que la source de donnée est le meme nom que celle que tu utilisé sous word

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Table vers Word et Open Office
    Par philippe151286 dans le forum WinDev
    Réponses: 10
    Dernier message: 04/08/2010, 11h41
  2. conversion excel vers open office
    Par djedje37et28 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2007, 14h29
  3. Migrer macro excel vers open office (VB vers Ooo) comment faire?
    Par cyberdevelopment dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/02/2007, 21h04
  4. access vers open office
    Par joker vb dans le forum Access
    Réponses: 7
    Dernier message: 04/11/2006, 21h59
  5. conversion d'une application vers open office
    Par bahhak dans le forum Access
    Réponses: 4
    Dernier message: 30/05/2006, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo