Php y correspondance de lettres en Word publipostage

didier dany -  
 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

10 respuestas

  1. Marc
     
    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);

    ?>
    5
    1. 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
      0
    2. Zhato
       
      Tu código es perfecto para lo que quiero hacer, sin embargo tengo una pregunta: ¿De dónde viene tu $inc? ¿Qué es?
      0
    3. mpmp93
       
      Hola, Una solución muy simple que propongo aquí: http://html5.immo-scope.com/index.php?page=php/publiPostageDocumentWord cordialmente
      0
    4. jamespage
       
      Gracias mpmp93!
      0
  2. Blashol
     
    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.

    :)
    0
  3. Titom
     
    ¡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
    0
  4. didier dany
     
    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
    0
  5. Titom
     
    ¡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
    0
  6. didier dany
     
    no por el momento, no tengo ninguna solución

    @+
    0
  7. Craft
     
    También me gustaría obtener una solución sobre el correo masivo en PHP. gracias por su ayuda.
    0
  8. ddempt Mensajes publicados 24 Estado Miembro
     
    Este código funciona, pero cuando se quiere crear un documento con 100 personas, no logro obtener un solo documento .doc que contenga 100 páginas. ¿Tiene alguna idea?
    0
    1. Urza45
       
      En PHP, el tamaño de las variables está limitado por defecto a 8 MB. Eso es lo que limita tu script.
      Hay que calcular el tamaño de tu variable a medida que avanza y prever la creación de varios archivos.
      0
  9. koa
     
    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
    0
  10. PPER
     
    Hola, no puedo abrir el archivo creado. ¿Alguien sabría por qué?
    Gracias de antemano
    0