IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

php publipostage word


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 69
    Points
    69
    Par défaut php publipostage word
    Bonjour,

    Je veux faire du publipostage depuis les informations récupérées dans un fichier MS Excel.
    Je récupére les information par un script php et à chaque informations dans le fichier excel, je lance le script publipostage, en php, pour créer un fichier work.

    mon code fonctionne pour la première ligne ms pas pour le reste des lignes d'excel.
    Pouvez-vous m'aider à créer un publipostage qd on a plusieurs ligne dans le fichier excel ?
    Merci,

    Le fichier PHP qui lit le fichier MS excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    define("FILENAME",$dossier. $fichier);
    $excel=new COM("Excel.application");
    $excel->sheetsinnewworkbook=1;
    $excel->Workbooks->open($dossier . $fichier);
    $book=$excel->Workbooks(1);
     
    $i = 1;
    while($cell=$sheet->Range('A'.$i) != ""){
      $i = $i+ 1;
    }
    $i = $i -1;
    $u = 2;
    for($u=2; $u<=$i; $u++){
                $cell=$sheet->Range('A'.$u);
                $date=$cell->value;
                $cell=$sheet->Range('B'.$u);
                $affectation=$cell->value;
                $cell=$sheet->Range('C'.$u);
                $gestionnaire=$cell->value;
     
                $_SESSION['date'] = $date;
                $_SESSION['affectation'] = $affectation;
                $_SESSION['gestionnaire'] = $gestionnaire;
                echo '<script language="Javascript"> document.location.replace("http://web/annexe1.php"); </script>';
    }
    $excel->Quit();
    Le fichier publipostage annexe1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $filename="opposition.rtf";
    if(file_exists($filename)){
            //On ouvre le modele
        $fp = fopen ($filename, 'r');
        $content = fread($fp, filesize($filename));
        fclose ($fp);   
        $content=str_replace("[date]",utf8_decode($_SESSION['date']),$content);  
        $content=str_replace("[affectation]",utf8_decode($_SESSION['affectation']),$content);
        $content=str_replace("[gestionnaire]",utf8_decode($_SESSION['gestionnaire']),$content);
    header("Content-Type: application/msword" );
        header("Content-Disposition: attachment; filename=$filename");
        $fh=fopen($filename, "rb");
        fpassthru($fh);
        fclose($fh);
    }

  2. #2
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 69
    Points
    69
    Par défaut php publipostage word
    Hello,
    J'ai modifié mon code.
    Quelqu'un peut m'aider ?
    Je fais le publipostage en php car certaines informations sont ds une bdd mysql. Je bloque sur la partie d'importation des informations depuis excel.
    merci,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    	define("FILENAME",$dossier. $fichier);
    	$excel=new COM("Excel.application"); 
    	$excel->sheetsinnewworkbook=1;
    	$excel->Workbooks->open($dossier . $fichier);
    	$book=$excel->Workbooks(1);
    	$sheet=$book->Worksheets(1);
     
    	$i = 1;
    	while($cell=$sheet->Range('A'.$i) != ""){ $i = $i+ 1; }
    	$i = $i -1; 
     
    	$u = 2;
    	for($u=2; $u<=$i; $u++){
                $cell=$sheet->Range('A'.$u);
                $date=$cell->value;
                $cell=$sheet->Range('B'.$u);
                $affectation=$cell->value;
                $cell=$sheet->Range('C'.$u);
                $gestionnaire=$cell->value;
    //PUBLIPOSTAGE
                if($u ==2){
                   $filena="fichier.rtf";
                   if(file_exists($filena)){
                        $fp = fopen ($filen, 'r');
                        $content = fread($fp, filesize($filena));
                        fclose ($fp);
                   }
                }
     
    $content=str_replace("[date]",utf8_decode($date),$content);           $content=str_replace("[affectation]",utf8_decode($affectation),$content);
    $content=str_replace("[gestionnaire]",utf8_decode($gestionnaire),$content);
     
            if($u>2){$texte.=" \page ".$content;}
            $fp = fopen ( $filena, 'a+' );
            fputs($fp,$texte);
            fclose ( $fp );
     
    if($u==$i){
             header("Content-Type: application/msword" );
             header("Content-Disposition: attachment; filename='fichier_final.doc'");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                echo $content;
            }
        }
    //FIN PUBLIPOSTAGE
            unset($sheet);
            unset($book);
            $excel->Workbooks->Close();
            $excel->Quit();
            unset($excel);

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Une indication ne répondant pas forcement à la question, quoique
    Bonjour bella1,

    J'ai rencontré un problème de publipostage en php (fusion de données mysql sur un doc Word).
    En fait lorsqu'on édite un fichier rtf plusieurs fois (ce qui est le cas ici), chaque élément concaténé est un fichier rtf complet avec ouverture et fermeture :
    {\rtf1 ......... }
    Cela fait que sous word seul la première occurrence se trouve affichée (on voit bien les autres sous un éditeur simple).
    La solution reste la suivante :

    Avant de faite " echo $content;"
    il suffit d'effectuer quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mask = "}}{\\rtf1";
    $chaine = "}\\page\\rtf1";
    $content = str_replace($mask, $chaine, $content);
    et dans ce cas retirer la concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if($u>2){$texte.=" \page ".$content;}
    En espérant que même avec 3 semaine de retard cela puisse être utile.

    Cordialement

    PS : la ré-écriture sur le fichier rtf de départ ne me semble pas utile .
    le lire une seule fois avant la boucle et concaténer la variable $content sur elle-même doit suffire. Le résultat se trouve dans le .doc final.

Discussions similaires

  1. [VBA-W]publipostage word
    Par nagdrir dans le forum VBA Word
    Réponses: 12
    Dernier message: 30/04/2006, 14h05
  2. Interaction entre PHP et Word/Excel
    Par NomUtilisateurDejaPris dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/04/2006, 15h38
  3. requete et publipostage word
    Par fenua hao dans le forum Access
    Réponses: 1
    Dernier message: 20/03/2006, 11h39
  4. migration Access2000 -> 2003 pb de publipostage word
    Par zoungern dans le forum Access
    Réponses: 1
    Dernier message: 15/11/2005, 16h54
  5. publipostage word?
    Par say dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 10/06/2005, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo