Bon alors voilà la méthode la plus simple et la plus efficace pour générer un fichier word dynamique en PHP qui soit reconnu comme un fichier word correct par la suite office :

Pour se faire nous auront besoin :
- Du fichier word avec la mise en page finale que vous souhaitez obtenir,
- De Word,
- D’un serveur web avec PHP,
- Et du script que je vais vous indiqer
1/ Enregistrer le document Word en RTF via Word
2/ Remplacer les éléments dynamique du style : le nom du destinataire du courrier par [nom], le prénom par [prenom]…
3/ Copier le fichier RTF modifié sur votre serveur web
4/ Et voici le script PHP qui permet de remplacer dynamiquement les champs du fichier RTF (word) :
<?php
//Chemin vers le fichier RTF
$filename="courrier.rtf";
if(file_exists($filename)){
//On ouvre le modele
$fp = fopen ($filename, 'r');
$content = fread($fp, filesize($filename));
fclose ($fp);
//On remplace les champs automatiques du modèle
$content=str_replace("[nom]","FAVRAT",$content);
$content=str_replace("[prenom]","Sébastien",$content);
//On affiche le document word
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;
?>
DÉMO :
Mon fichier RTF modele : courrier.rtf
Le fichier après traitement PHP : courrier.php
Je tiens à préciser que l’encodage de mes pages est UTF-8 et que pour la gestion des accents et caractères spéciaux à la française on utilise la fonction PHP utf8_decode() :
$content=str_replace("[prenom]",utf8_decode("Sébastien"),$content);
Edit :
Il existe aussi des librairies pour gérer les fichiers word, Excel et powerpoint :
Partager sur :
Ping : Comment faire un fichier Word en PHP | KubX
Bonjour,
je voulais savoir sil est possible d ajouter un tableau dans le doc word.
Merci bcp.
Dans la méthode décrite sur le billet oui, il il est possible de créer un tableau fixe dans le modèle (sa taille ne pourra pas être modifiée).
Par contre il n’est pas possible de créer un tableau de manière dynamique, pour ça il faudra s’orienter vers les librairies PHPWord.