Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Méthode pour fusion de données vers documents Word

5 réponses
Avatar
[[ Olivier ]]
Bonjour,

Je cherche une méthode simple et efficace.
voila le contexte :

Je souhaite que mes clients puissent utiliser Word pour fair des modèles de
courriers.
Ensuite, je récupère un modèle et dans un fonction .Net, je fusionne ce
dovument avec mes données.

Comment faites-vous ?
Bien sur il existe la méthode dans Word mais c'est pas facile et mes clients
sont un peu "paumés".
J'aimerai leurs faciliter le travail. Eux ils font lers modèle et moi je
créer les fusions.

Par contre, comment ? Peut-on insérer des "balise", "mots clés" multiples
dans un document Word et ensuite que je puisse reconnaitre dans mon prog
.net ?

Bref, je cherche une méthode dans ce genre.

ps: merci de préciser quel version de Word : 2003 ou +

Merci
Olivier

5 réponses

Avatar
benji_dv
Bonjour,
En effet cela est possible, moi je passe par l'automation Word (ou pilotage
word).
Suivant la version d'office que tu utilises, il te faudra générer les PIA
(Primary Interop Assembly) ou les télécharger chez microsoft.
A partir d'office XP ils sont dispo chez microsoft (il me semble que pour
les version antérieures, c'est VS qui les génèrent).
Pour office XP (2002) - http://support.microsoft.com/default.aspx?kbid28912
Tu peux également visiter le site http://www.developpez.com qui contient pas
mal d'infos à ce sujet. et plus particulièrement
http://morpheus.developpez.com/vsto2/

Mon expérience à ce sujet est que c'est réalisable, mais qu'il faut bien
tenir compte du fait suivant : en manipulant les objets applicatifs office,
tu instancies réellement l'application (Word en ce qui te concerne) Dès lors,
en cas de throw d'exception , IL EST IMPERATIF de fermer ton instance
d'application (également lorsque tu as fini ton traitement). Idealement,
utilise la fonctionnalité Try-catch-Finaly ou ce dernier s'exécutera qu'il y
ai ou non exception (pour fermer Word).
C'est le seul truc un peu compliqué à penser

J'espère que ca taidera,
@+

"[[ Olivier ]]" a écrit :

Bonjour,

Je cherche une mthode simple et efficace.
voila le contexte :

Je souhaite que mes clients puissent utiliser Word pour fair des modles de
courriers.
Ensuite, je rcupre un modle et dans un fonction .Net, je fusionne ce
dovument avec mes donnes.

Comment faites-vous ?
Bien sur il existe la mthode dans Word mais c'est pas facile et mes clients
sont un peu "paums".
J'aimerai leurs faciliter le travail. Eux ils font lers modle et moi je
crer les fusions.

Par contre, comment ? Peut-on insrer des "balise", "mots cls" multiples
dans un document Word et ensuite que je puisse reconnaitre dans mon prog
.net ?

Bref, je cherche une mthode dans ce genre.

ps: merci de prciser quel version de Word : 2003 ou +

Merci
Olivier



Avatar
[[ Olivier ]]
Merci mais le problème est :

- je ne maitrise pas forcément la vesion de word sur le poste client.
bon a la limite je peut les forcer a changer.....

- le syntaxe du code .net pour piloter word a l'air de changer en fonction
des versions....
je vais pas faire autant de fonction qu'il y a de vesion, non ?

merci
olivier


"benji_dv" a écrit dans le message de
news:
Bonjour,
En effet cela est possible, moi je passe par l'automation Word (ou
pilotage
word).
Suivant la version d'office que tu utilises, il te faudra générer les PIA
(Primary Interop Assembly) ou les télécharger chez microsoft.
A partir d'office XP ils sont dispo chez microsoft (il me semble que pour
les version antérieures, c'est VS qui les génèrent).
Pour office XP (2002) -
http://support.microsoft.com/default.aspx?kbid28912
Tu peux également visiter le site http://www.developpez.com qui contient
pas
mal d'infos à ce sujet. et plus particulièrement
http://morpheus.developpez.com/vsto2/

Mon expérience à ce sujet est que c'est réalisable, mais qu'il faut bien
tenir compte du fait suivant : en manipulant les objets applicatifs
office,
tu instancies réellement l'application (Word en ce qui te concerne) Dès
lors,
en cas de throw d'exception , IL EST IMPERATIF de fermer ton instance
d'application (également lorsque tu as fini ton traitement). Idealement,
utilise la fonctionnalité Try-catch-Finaly ou ce dernier s'exécutera qu'il
y
ai ou non exception (pour fermer Word).
C'est le seul truc un peu compliqué à penser

J'espère que ca taidera,
@+

"[[ Olivier ]]" a écrit :

Bonjour,

Je cherche une mthode simple et efficace.
voila le contexte :

Je souhaite que mes clients puissent utiliser Word pour fair des modles
de
courriers.
Ensuite, je rcupre un modle et dans un fonction .Net, je fusionne ce
dovument avec mes donnes.

Comment faites-vous ?
Bien sur il existe la mthode dans Word mais c'est pas facile et mes
clients
sont un peu "paums".
J'aimerai leurs faciliter le travail. Eux ils font lers modle et moi je
crer les fusions.

Par contre, comment ? Peut-on insrer des "balise", "mots cls" multiples
dans un document Word et ensuite que je puisse reconnaitre dans mon prog
.net ?

Bref, je cherche une mthode dans ce genre.

ps: merci de prciser quel version de Word : 2003 ou +

Merci
Olivier





Avatar
benji_dv
Bonjour,
Ok, Il te reste alors plusieurs autres possibilités :
Passer par un fichier RTF (qui sera lisible sous n'importe quelle version de
Word),
Du coup les modèles de doc seront aussi en RTF (sans quoi tu devras
déterminer avec ton client les informations à insérer dynamiquement et
déterminer des mots clés permettant de positionner ces informations. Exemple
%clientNom%, %clientAdresse%,...) Ces mots clés te permettront par des
maChaineString.Replace ("%clientNom%","toto) si ton client se nomme toto.
Attention : NE PAS UTILISER DE CARACTERES ACCENTUES POUR CES BALISES (lol)

Ou, utiliser un composant externe propriétaire (un controle développé par
une société tierce) te permettant de manipuler des doc Word (par exemple)
sans disposer de la version sur le poste. Ce qui te permet de rester
indépendant de la version installée...
MAIS ces controles sont généralement payants (oups), donc surcout...
Inconvénient : tu deviens dépendant d'une société tierce...

Ou, tu automationnes Word, sans quoi il faut varier les méthodes utilisées
en fonction des versions succeptibles d'être installées chez le client
(modérément car les méthodes de base - instancier, ouvrir un doc, insérer du
texte,... sont +/- identiques pour toutes les version).
Dans ce cas, informe toi sur le design pattern strategie et fabrique simple.
ce qui te permettra de garder un code propre...

voilou,


"[[ Olivier ]]" a écrit :

Merci mais le problème est :

- je ne maitrise pas forcément la vesion de word sur le poste client.
bon a la limite je peut les forcer a changer.....

- le syntaxe du code .net pour piloter word a l'air de changer en fonction
des versions....
je vais pas faire autant de fonction qu'il y a de vesion, non ?

merci
olivier


Avatar
[[ Olivier ]]
merci pour tes infos et pistes.

olivier




"benji_dv" a écrit dans le message de
news:
Bonjour,
Ok, Il te reste alors plusieurs autres possibilités :
Passer par un fichier RTF (qui sera lisible sous n'importe quelle version
de
Word),
Du coup les modèles de doc seront aussi en RTF (sans quoi tu devras
déterminer avec ton client les informations à insérer dynamiquement et
déterminer des mots clés permettant de positionner ces informations.
Exemple
%clientNom%, %clientAdresse%,...) Ces mots clés te permettront par des
maChaineString.Replace ("%clientNom%","toto) si ton client se nomme toto.
Attention : NE PAS UTILISER DE CARACTERES ACCENTUES POUR CES BALISES (lol)

Ou, utiliser un composant externe propriétaire (un controle développé par
une société tierce) te permettant de manipuler des doc Word (par exemple)
sans disposer de la version sur le poste. Ce qui te permet de rester
indépendant de la version installée...
MAIS ces controles sont généralement payants (oups), donc surcout...
Inconvénient : tu deviens dépendant d'une société tierce...

Ou, tu automationnes Word, sans quoi il faut varier les méthodes utilisées
en fonction des versions succeptibles d'être installées chez le client
(modérément car les méthodes de base - instancier, ouvrir un doc, insérer
du
texte,... sont +/- identiques pour toutes les version).
Dans ce cas, informe toi sur le design pattern strategie et fabrique
simple.
ce qui te permettra de garder un code propre...

voilou,


"[[ Olivier ]]" a écrit :

Merci mais le problème est :

- je ne maitrise pas forcément la vesion de word sur le poste client.
bon a la limite je peut les forcer a changer.....

- le syntaxe du code .net pour piloter word a l'air de changer en
fonction
des versions....
je vais pas faire autant de fonction qu'il y a de vesion, non ?

merci
olivier




Avatar
[[ Olivier ]]
je viens de remarquer que dans les versions : 2000, 2002 et XP (et peut-être
2007)
dans le menu Insertion --> Champs --> dans la liste je prends KeyWords.
Cela me place des "mots clés" aux endroits souhaités.

Ne serait-pas une bonne piste ?

Par contre, comment ouvrir le modèle Word, récupérer ces "Champs", mettre à
la place mes données... tout ca en Vb.net ?
J'ai chercher des exemples mais je n'ai trouvé que comment lire les signets
et non les "champs".
sur les site de MS y a vraiment rien ou alors c'est vraiment caché.
C'est étonnant quand même qu'un des produit phare de MS ne soit pas bien
expliqué, enfin je pense.

si t'as des idées.

A suivre et merci

olivier




"benji_dv" a écrit dans le message de
news:
Bonjour,
Ok, Il te reste alors plusieurs autres possibilités :
Passer par un fichier RTF (qui sera lisible sous n'importe quelle version
de
Word),
Du coup les modèles de doc seront aussi en RTF (sans quoi tu devras
déterminer avec ton client les informations à insérer dynamiquement et
déterminer des mots clés permettant de positionner ces informations.
Exemple
%clientNom%, %clientAdresse%,...) Ces mots clés te permettront par des
maChaineString.Replace ("%clientNom%","toto) si ton client se nomme toto.
Attention : NE PAS UTILISER DE CARACTERES ACCENTUES POUR CES BALISES (lol)

Ou, utiliser un composant externe propriétaire (un controle développé par
une société tierce) te permettant de manipuler des doc Word (par exemple)
sans disposer de la version sur le poste. Ce qui te permet de rester
indépendant de la version installée...
MAIS ces controles sont généralement payants (oups), donc surcout...
Inconvénient : tu deviens dépendant d'une société tierce...

Ou, tu automationnes Word, sans quoi il faut varier les méthodes utilisées
en fonction des versions succeptibles d'être installées chez le client
(modérément car les méthodes de base - instancier, ouvrir un doc, insérer
du
texte,... sont +/- identiques pour toutes les version).
Dans ce cas, informe toi sur le design pattern strategie et fabrique
simple.
ce qui te permettra de garder un code propre...

voilou,


"[[ Olivier ]]" a écrit :

Merci mais le problème est :

- je ne maitrise pas forcément la vesion de word sur le poste client.
bon a la limite je peut les forcer a changer.....

- le syntaxe du code .net pour piloter word a l'air de changer en
fonction
des versions....
je vais pas faire autant de fonction qu'il y a de vesion, non ?

merci
olivier