MSWord & PHP

Le
paul.tavernier
Bonjour,
Je cherche des points de départ (liens, tutoriels, en
Francais/Anglais):
Pour planter le décor:
1) J'ai des documents Word 2000 sur un serveur Win2k où est installé
Apache/PHP/MySQL
2) Ces documents sont des fichiers templates pour des mailing (jusqu'à
présent les bases de clients sont sous Excel)
3) J'ai désormais ma base de client sous MySQL gérée par une appli PHP
que j'ai créée
4) Je voudrais "injecter ces données MYSQL" dans mes documents Word
pour pouvoir lancer un mailing par exemple.
5) L'idéal serait que Word mouline sur le serveur, génère le mailing,
et affiche le résultat dans une fenêtre popup sur le client.

Merci pour toute aide!
Bien cordialement,
Paul.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Molina
Le #541899
1) J'ai des documents Word 2000 sur un serveur Win2k où est installé
Apache/PHP/MySQL


Utiliser un format plus ouvert comme celui de OpenOffice.org (OOo) ou tout
simplement... du HTML avec des feuilles de styles aurait été un meilleur
choix. Le formar MS Office XML a été « ouvert » et est disponible sur le
site de Microsoft mais le format de OOo est bien mieux documenté et surtout
le projet en lui-même est ouvert.

2) Ces documents sont des fichiers templates pour des mailing (jusqu'à
présent les bases de clients sont sous Excel)


J'espère que le document Word est en HTML et non pas en « Word-Word », sinon
il va falloir exporter les modèles en HTML avant de générer le bulletion de
la mailing...

3) J'ai désormais ma base de client sous MySQL gérée par une appli PHP
que j'ai créée


Un bon point :). Même si Excel est pas mal pour gérer des petites listes.

4) Je voudrais "injecter ces données MYSQL" dans mes documents Word
pour pouvoir lancer un mailing par exemple.


Je te conseille d'enregistrer tes modèles Word au format HTML et d'utiliser
un moteur de template pour « injecter tes données MySQL ». Je pense à
Smarty.

5) L'idéal serait que Word mouline sur le serveur, génère le mailing,
et affiche le résultat dans une fenêtre popup sur le client.


Il te faudrait un add-in Word en VB ou quelque chose dans ce goût-là qui se
chargerait d'accèder aux éléments du modèle et de remplacer les données à
partir des valeurs de ta base... Très fastidieux à mon avis. Autant passer
par PHP/MySQL comme tu l'as fait pour tes listes de clients.

Modèle HTML + PHP/Smarty + MySQL = générer le bulletin à envoyer au format
HTML. Tu peux parfaitement conserver ton système de mise en page sous Word
si le HTML généré est correct, je te conseille d'utiliser un plugin
d'exportation HTML plutôt que la fonction de base, il est dispo gratuitement
sur le site de MS. Pour ma part j'utilisais aussi MS Office 2000 mais je
suis passé à OOo tellement le produit de MS était bogué et surtout
complètement à la masse niveau XML (corrigé avec MS Office 2004 mais trop
tard... 4 ans après !).

OOo te permet même d'éditer ton modèle au format HTML avec correction
d'orthographe, utilisation d'une base MySQL à partir d'un langage script
très simple (style VB), les documents OOo sont de simples .zip renommés avec
des fichiers XML dedans qui contiennent : contenu, feuilles de styles et
autres infos. Du bonheur :).

JM

NoName
Le #541660
(Paul T) wrote in
news::

Bonjour,
Je cherche des points de départ (liens, tutoriels, en
Francais/Anglais...):
Pour planter le décor:
1) J'ai des documents Word 2000 sur un serveur Win2k où est installé
Apache/PHP/MySQL
2) Ces documents sont des fichiers templates pour des mailing (jusqu'à
présent les bases de clients sont sous Excel)
3) J'ai désormais ma base de client sous MySQL gérée par une appli PHP
que j'ai créée
4) Je voudrais "injecter ces données MYSQL" dans mes documents Word
pour pouvoir lancer un mailing par exemple.
5) L'idéal serait que Word mouline sur le serveur, génère le mailing,
et affiche le résultat dans une fenêtre popup sur le client.


Voir les fonction COM de PHP
<?php
// starting word
$word = new COM("word.application") or die("Unable to instanciate Word");
print "Loaded Word, version {$word->Version}n";

//bring it to front
$word->Visible = 1;

//open an empty document
$word->Documents->Add();

//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//closing word
$word->Quit();

//free the object
$word->Release();
$word = null;
?>

Shrom
Le #541662
"Jean-Marc Molina" de news:40430908$0$28459$
1) J'ai des documents Word 2000 sur un serveur Win2k où est installé
Apache/PHP/MySQL


Utiliser un format plus ouvert comme celui de OpenOffice.org (OOo) ou tout
simplement... du HTML avec des feuilles de styles aurait été un meilleur
choix.


Tout à fait d'accord

Le formar MS Office XML a été « ouvert » et est disponible sur le
site de Microsoft mais le format de OOo est bien mieux documenté et
surtout

le projet en lui-même est ouvert.


Le format XML de M$ Office ne peut pas être utilisé dans des applications
libres.


2) Ces documents sont des fichiers templates pour des mailing (jusqu'à
présent les bases de clients sont sous Excel)


J'espère que le document Word est en HTML et non pas en « Word-Word »,
sinon

il va falloir exporter les modèles en HTML avant de générer le bulletion
de

la mailing...


Ou tout simplement controler Word via COM.

3) J'ai désormais ma base de client sous MySQL gérée par une appli PHP
que j'ai créée


Un bon point :). Même si Excel est pas mal pour gérer des petites listes.


Voir un fichier texte au format CSV ou un fichier bsddb

4) Je voudrais "injecter ces données MYSQL" dans mes documents Word
pour pouvoir lancer un mailing par exemple.


Je te conseille d'enregistrer tes modèles Word au format HTML et
d'utiliser

un moteur de template pour « injecter tes données MySQL ». Je pense à
Smarty.
5) L'idéal serait que Word mouline sur le serveur, génère le mailing,
et affiche le résultat dans une fenêtre popup sur le client.




J'y revient, il faut utiliser COM.

Le bulletin est un bulletin envoyé par la poste ou par e-mail. Si c'est par
e-mail un format PDF ou HTML est préférable ( sans oublier un format texte
pur )


Stephane
Le #541659
"Paul T" a écrit
Bonjour,
Je cherche des points de départ (liens, tutoriels, en
Francais/Anglais...):
Pour planter le décor:
1) J'ai des documents Word 2000 sur un serveur Win2k où est installé
Apache/PHP/MySQL
2) Ces documents sont des fichiers templates pour des mailing (jusqu'à
présent les bases de clients sont sous Excel)
3) J'ai désormais ma base de client sous MySQL gérée par une appli PHP
que j'ai créée
4) Je voudrais "injecter ces données MYSQL" dans mes documents Word
pour pouvoir lancer un mailing par exemple.
5) L'idéal serait que Word mouline sur le serveur, génère le mailing,
et affiche le résultat dans une fenêtre popup sur le client.

...Merci pour toute aide!
Bien cordialement,
Paul.


Salut,

1. Pourquoi pas employer php pour envoyer ton mailling?
2. Un méthode pour générer un fichier word est toute simple:

mplement mettre ca au début du fichier:
header("content-type: application/msword");
Ta requete
SELECT * FROM matable WHERE id = '$id'
etc...

Puis ton affichage de ta requete sous la forme que tu désires. Et hop, ton fichier s'ouvre dans word.

echo "Bienvenue dans MS Word";

Il y a d'autre méthode, je laisse le soin aux autres cracks du NG d'y répondre.

Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.

http://www.velo-passion.com pour les fans de vélo
http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2

ludovic Thebault
Le #541185
Paul T wrote:

1) J'ai des documents Word 2000 sur un serveur Win2k où est installé
Apache/PHP/MySQL
2) Ces documents sont des fichiers templates pour des mailing (jusqu'à
présent les bases de clients sont sous Excel)
3) J'ai désormais ma base de client sous MySQL gérée par une appli PHP
que j'ai créée
4) Je voudrais "injecter ces données MYSQL" dans mes documents Word
pour pouvoir lancer un mailing par exemple.
5) L'idéal serait que Word mouline sur le serveur, génère le mailing,
et affiche le résultat dans une fenêtre popup sur le client.


J'avais un problème un peu similaire à résoudre : créer des étiquettes à
partir d'une bdd mysql.

J'ai fouillé du côté de FPDF mais je n'ai pas réussi à faire ce que je
voulais. J'ai alors trouvé une solution basé sur le format RTF. Tu peux
donc chercher de ce côté-là.

Voici ma démarche :
- Créer une page d'étiquettes avec Word
- Ne conserver que la première ligne d'étiquettes
- Y entrer des données "marqueur" comme Nom1, Adresse1... dans la
présentation que l'on veut.
- Enregistrer en RTF
- Séparer la partie "en-tête", données, "fin de document" du fichier RTF
avec un éditeur de texte et en faire 3 fichiers txt différents

Puis avec une moulinette php, refabriquer un fichier rtf en plaçant le
fichier header, puis faire une boucle avec le fichier "données" où l'on
remplacera les "marqueurs" par les données mysql, et enfin rajouter le
fichier "fin de document".

Et ça marche ! Quand l'utilisateur lance le fichier php, cela ouvre le
document RTF (ou enregistre, selon le navigateur et la plateforme).
Avantage, ce dernier reste modifiable.

Inconvénient, le RTF n'étant pas "standard", mieux vaut que
l'utilisateur possède Word également. (Par exemple Works et WordPad ne
reprennent pas du tout la présentation en étiquettes). Mais comme mon
appli se destine à être utilisée en local, ce problème n'en est pas un.

Publicité
Poster une réponse
Anonyme