Php y correspondance de lettres en Word publipostage
didier dany
-
jamespage -
jamespage -
Hola a todos
Quisiera a partir de un script PHP extraer datos de una base MySQL para hacer una carta personalizada con Word (es decir, una correspondencia con una carta tipo por ejemplo ya existente). Precisión: genero una consulta desde el sitio remoto.
Gracias por su ayuda.
didier dany
Quisiera a partir de un script PHP extraer datos de una base MySQL para hacer una carta personalizada con Word (es decir, una correspondencia con una carta tipo por ejemplo ya existente). Precisión: genero una consulta desde el sitio remoto.
Gracias por su ayuda.
didier dany
10 respuestas
por el momento tengo la solución:
Crear un documento Word con campos estilo {{NOM}}
guardarlo en RTF y luego el siguiente código PHP (pueden colocar este código en un bucle y con la función print de JavaScript imprimir página por página, lo hago sin problema !!!
<?php
// Carta
$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);
?>
Crear un documento Word con campos estilo {{NOM}}
guardarlo en RTF y luego el siguiente código PHP (pueden colocar este código en un bucle y con la función print de JavaScript imprimir página por página, lo hago sin problema !!!
<?php
// Carta
$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);
?>
jamespage
Hola Marc,
Aquí va:
Quisiera (a través de un script PHP) generar un .doc a partir de 2 archivos:
- template.doc: es el formato de mi documento final. Entre comillas los campos a rellenar.
- fichier.xls: todos los datos que pueden valer mis campos.
Con Word, si hago combinar, me genera mi documento Word con el template repetido tantas veces como haya filas en mi .xls, manteniendo el formato de este último.
Quisiera que mi código PHP haga lo mismo (por ahora solo he generado el archivo xls con una exportación de datos desde mi base).
Si tienes alguna idea y si has entendido todo ????
Gracias
Zhato
Tu código es perfecto para lo que quiero hacer, sin embargo tengo una pregunta: ¿De dónde viene tu $inc? ¿Qué es?
mpmp93
Hola,
Una solución muy simple que propongo aquí:
http://html5.immo-scope.com/index.php?page=php/publiPostageDocumentWord
cordialmente
jamespage
Gracias mpmp93!
oye, lo siento, pero nadie tiene respuesta a tu pregunta. en cambio, con el tiempo, si has avanzado sobre la cuestión, me interesaría tener información.
:)
:)
¡Hola!
Estoy buscando hacer lo mismo ......
Ve a ver:
http://www.npds.org/viewtopic.php?topic=2666&forum=5
Hay un script PHP que crea un archivo Word (u Excel) a partir de una consulta SQL (algunas modificaciones por hacer, está marcado en el foro)
Sin embargo, para el correo masivo, no lo sé .....
Nos vemos
Estoy buscando hacer lo mismo ......
Ve a ver:
http://www.npds.org/viewtopic.php?topic=2666&forum=5
Hay un script PHP que crea un archivo Word (u Excel) a partir de una consulta SQL (algunas modificaciones por hacer, está marcado en el foro)
Sin embargo, para el correo masivo, no lo sé .....
Nos vemos
Hola,
Conozco este script y ya he trabajado con él, de hecho no tiene ningún interés porque no funciona, fue necesario reescribirlo.
Estoy buscando más bien una solución con la inserción de PHP (como lenguaje anfitrión en VBA) para hacer una macro
es una idea que se me ocurrió, no necesariamente buena.
gracias de todas formas, es agradable
Didier
Conozco este script y ya he trabajado con él, de hecho no tiene ningún interés porque no funciona, fue necesario reescribirlo.
Estoy buscando más bien una solución con la inserción de PHP (como lenguaje anfitrión en VBA) para hacer una macro
es una idea que se me ocurrió, no necesariamente buena.
gracias de todas formas, es agradable
Didier
¡Hola!
¿eh? ¡El script funciona muy bien, lo uso!
Sólo hay 2-3 errores de sintaxis.
Sin embargo, si tienes una solución para el correo masivo ........
Nos vemos
Titom
¿eh? ¡El script funciona muy bien, lo uso!
Sólo hay 2-3 errores de sintaxis.
Sin embargo, si tienes una solución para el correo masivo ........
Nos vemos
Titom
También se pueden hacer documentos xml. Basta con inventar algunas cadenas tipo que deberán ser analizadas con los datos extraídos. Por ejemplo, se guarda su carta en formato xml, se recupera la carta xml con un script php, se procede a la sustitución con una biblioteca como simplexml... En cada registro, se añade un salto de página y listo... registro siguiente.
* 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