Php y correspondance de lettres en Word publipostage

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. 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. 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. 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. Hola,

      Una solución muy simple que propongo aquí:
      http://html5.immo-scope.com/index.php?page=php/publiPostageDocumentWord

      cordialmente
      0
    4. Gracias mpmp93!
      0
  2. 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
    1. ¡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
      1. 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
        1. ¡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
          1. no por el momento, no tengo ninguna solución

            @+
            0
            1. También me gustaría obtener una solución sobre el correo masivo en PHP. gracias por su ayuda.
              0
              1. 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. 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
              2. 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
                1. Hola, no puedo abrir el archivo creado. ¿Alguien sabría por qué?
                  Gracias de antemano
                  0