Php et documents word publipostage
didier dany
-
jamespage -
jamespage -
Bonjour à tous
Je voudrais a partir d'un script php extraire des données d'une base mysql pour faire un courrier individualisé avec word (soit un publipostage avec lettre type par exemple déjà existante). précison : je génère une requete à partir du site distant.
Merci pour votre aide.
didier dany
Je voudrais a partir d'un script php extraire des données d'une base mysql pour faire un courrier individualisé avec word (soit un publipostage avec lettre type par exemple déjà existante). précison : je génère une requete à partir du site distant.
Merci pour votre aide.
didier dany
A voir également:
- Php et documents word publipostage
- Word 2013 - Télécharger - Traitement de texte
- Word et excel gratuit - Guide
- Publipostage mail - Accueil - Word
- Tableau word - Guide
- Espace insécable word - Guide
10 réponses
pour le moment j'ai la solution :
Creer un document word avec des champs style {{NOM}}
le sauver en RTF puis le code PHP suivant (vous pouvez mettre ce code dans une boucle et avec la fonction print de javascript imprimer page par page, je le fait sans probleme !!!
<?php
// Lettre
$f=fopen("./word/Fichier en entree.rtf","r");
$R=fopen("./word/fichier en sortie.doc","w");
while (!feof($f))
{
$ligne=fgets($f,20000);
$Long=strlen($ligne);
$Nouvligne="";
for ($i=$inc;$i<$Long;$i++)
{
if (substr($ligne,$i,4)=="\{\{")
{
$deb=$i;
$var="";
for ($j=$i+4;$j<$Long;$j++)
{
if (substr($ligne,$j,4)=="\}\}")
{
$fin=$j;
break;
}
}
$var=substr($ligne,$deb+4,$fin-$deb-4);
if ($var=="NOM") $Nouvligne.=$Nom_Dusage;
else if ($var=="NOM") $Nouvligne.=$Nom;
else if ($var=="PRENOM") $Nouvligne.=$Prenom;
else if ($var=="ADRESSE") $Nouvligne.=$Ass_Adresse;
else if ($var=="CPL_ADRESSE") $Nouvligne.=$Ass_Adresse_Cmpl;
else if ($var=="CP") $Nouvligne.=$Adresse_CP;
else if ($var=="VILLE") $Nouvligne.=$Adresse_Ville;
else if ($var=="DATE") $Nouvligne.=date("d/m/Y");
else if ($var=="CIV") $Nouvligne.=$Civ;
else $Nouvligne.="???????";
$i=$j+3;
}
else
{
$Nouvligne.=substr($ligne,$i,1);
}
}
fwrite($R,$Nouvligne);
}
fclose($f);
fclose($R);
?>
Creer un document word avec des champs style {{NOM}}
le sauver en RTF puis le code PHP suivant (vous pouvez mettre ce code dans une boucle et avec la fonction print de javascript imprimer page par page, je le fait sans probleme !!!
<?php
// Lettre
$f=fopen("./word/Fichier en entree.rtf","r");
$R=fopen("./word/fichier en sortie.doc","w");
while (!feof($f))
{
$ligne=fgets($f,20000);
$Long=strlen($ligne);
$Nouvligne="";
for ($i=$inc;$i<$Long;$i++)
{
if (substr($ligne,$i,4)=="\{\{")
{
$deb=$i;
$var="";
for ($j=$i+4;$j<$Long;$j++)
{
if (substr($ligne,$j,4)=="\}\}")
{
$fin=$j;
break;
}
}
$var=substr($ligne,$deb+4,$fin-$deb-4);
if ($var=="NOM") $Nouvligne.=$Nom_Dusage;
else if ($var=="NOM") $Nouvligne.=$Nom;
else if ($var=="PRENOM") $Nouvligne.=$Prenom;
else if ($var=="ADRESSE") $Nouvligne.=$Ass_Adresse;
else if ($var=="CPL_ADRESSE") $Nouvligne.=$Ass_Adresse_Cmpl;
else if ($var=="CP") $Nouvligne.=$Adresse_CP;
else if ($var=="VILLE") $Nouvligne.=$Adresse_Ville;
else if ($var=="DATE") $Nouvligne.=date("d/m/Y");
else if ($var=="CIV") $Nouvligne.=$Civ;
else $Nouvligne.="???????";
$i=$j+3;
}
else
{
$Nouvligne.=substr($ligne,$i,1);
}
}
fwrite($R,$Nouvligne);
}
fclose($f);
fclose($R);
?>
écoute, désolé, mais personne n'a de réponse a ta question. en revanche, depuis le temps si tu as avancé sur la question je serais intéressé d'avoir des infos.
:)
:)
Salut !
Je cherche a faire la même chose ......
Vas voir sur :
http://www.npds.org/viewtopic.php?topic=2666&forum=5
Y'a un script php qui crée un fichier word (ou excel) à partir d'une requête SQL (qques modif à faire, c marqué dans le forum)
Par contre pour le publipostage, je sais po .....
A+
Je cherche a faire la même chose ......
Vas voir sur :
http://www.npds.org/viewtopic.php?topic=2666&forum=5
Y'a un script php qui crée un fichier word (ou excel) à partir d'une requête SQL (qques modif à faire, c marqué dans le forum)
Par contre pour le publipostage, je sais po .....
A+
Bonjour,
Je connais ce script et je l'ai déjà travailler, en fait il n'a aucun interet car il ne marche pas, il a fallu le réécrire.
Je cherche plutôt une solution avec l'insertion de php (comme language hôte dans vba) pour en faire une macro
c'est une idée qui m'est passée par la tête pas forcement bonne.
merci de toute facon c'est sympa
Didier
Je connais ce script et je l'ai déjà travailler, en fait il n'a aucun interet car il ne marche pas, il a fallu le réécrire.
Je cherche plutôt une solution avec l'insertion de php (comme language hôte dans vba) pour en faire une macro
c'est une idée qui m'est passée par la tête pas forcement bonne.
merci de toute facon c'est sympa
Didier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut !
hein ? le script fonctionne très bien, je l'utilise !
Y'a juste 2-3 erreurs de syntaxe.
Par conte, si t'as une solution pour le publipostage ........
A +
Titom
hein ? le script fonctionne très bien, je l'utilise !
Y'a juste 2-3 erreurs de syntaxe.
Par conte, si t'as une solution pour le publipostage ........
A +
Titom
Ce code fonctionne mais lorsque l'on veut créer un document avec 100 personnes, je n'arrive pas à avoir 1 seul document .doc qui contient 100 pages.
Avez-vous une idée ?
Avez-vous une idée ?
On peut aussi faire des documents xml. Il suffit d'inventer quelques chaînes types qui devront être parsées avec les données extraites. Par exemple, on enregistre sa lettre au format xml, on récupère la lettre xml avec un script php, on procède au remplacement à l'aide d'une librairie comme simplexml... A chaque enregistrement, on ajoute un saut de page et hop... enregistrement suivant.
* https://xml.developpez.com/
* http://ch2.php.net/simplexml
* http://rep.oio.dk/Microsoft.com/officeschemas/welcome.htm
* https://xml.developpez.com/
* http://ch2.php.net/simplexml
* http://rep.oio.dk/Microsoft.com/officeschemas/welcome.htm
voilà j'aimerai (via un script php) générer un .doc à partir de 2 fichiers :
- template.doc : c'est la mise en forme de mon document final. Avec entre guillement les champs à renseigner.
- fichier.xls : toutes les données que peuvent valoir mes champs.
Avec word si je clique sur fusionner, cela me génère mon fichier word avec le template répété autant de fois qu'il y a de lignes dans mon .xls avec la mise en forme de ce dernier.
J'aimerai que mon code php fasse la même chose (pour l'instant je n'ai généré que le fichier xls avec un export de donnée de puis ma base)
Si tu as une idée et si tu as tout compris ;)
Merci
Une solution très simple que je propose ici:
http://html5.immo-scope.com/index.php?page=php/publiPostageDocumentWord
cordialement