Ce document exploite 2 fichiers
Le fichier modèle est une page que vous avez créé à l'aide de MS Word version antérieure à 2007.
Voici mon fichier template.htm
////////////////////////////////// <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 11"> <meta name=Originator content="Microsoft Word 11"> <title>$titrefacture</title> <style> @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627421319 -2147483648 8 0 66047 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; text-autospace:none; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} h1 {mso-style-next:Normal; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:1; tab-stops:center 248.1pt; text-autospace:none; font-size:10.0pt; font-family:Tahoma; mso-font-kerning:0pt; text-decoration:underline; text-underline:single;} h2 {mso-style-next:Normal; margin:0cm; margin-bottom:.0001pt; text-align:center; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:2; text-autospace:none; font-size:16.0pt; font-family:Tahoma;} h3 {mso-style-next:Normal; margin-top:6.0pt; margin-right:0cm; margin-bottom:0cm; margin-left:0cm; margin-bottom:.0001pt; text-align:left; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:3; text-autospace:none; font-size:11.0pt; font-family:Tahoma; font-style:italic;} p.MsoHeader, li.MsoHeader, div.MsoHeader {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:center 8.0cm right 16.0cm; text-autospace:none; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} p.MsoFooter, li.MsoFooter, div.MsoFooter {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:center 8.0cm right 16.0cm; text-autospace:none; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} /* Page Definitions */ @page Section1 {size:595.3pt 841.9pt; margin:1.0cm 1.0cm 39.7pt 42.55pt; mso-header-margin:34.0pt; mso-footer-margin:39.7pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:891423539; mso-list-type:simple; mso-list-template-ids:67895297;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:F0B7; mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt; font-family:Symbol; mso-bidi-font-family:Symbol;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} </style> </head> <body lang=FR style='tab-interval:35.4pt;text-justify-trim:punctuation'> <div class=Section1> <p class=MsoNormal><span style='font-size:11.0pt;font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt'>$titre<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt'>$nomclient<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt'>$adresseclient<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:248.1pt'><b style='mso-bidi-font-weight: normal'><u><span style='font-size:11.0pt'>$ville - $pays<o:p></o:p></span></u></b></p> <p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt; font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoNormal style='margin-left:248.1pt'><span style='font-size:11.0pt; font-family:Tahoma'><o:p> </o:p></span></p> <h2 style='margin-top:36.0pt'>Facture N° $numfacture du $datefacture</h2> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Tahoma'>Affaire $nomdossier<o:p></o:p></span></p> <div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt; mso-border-bottom-alt:solid windowtext .75pt;padding:0cm 0cm 1.0pt 0cm; margin-left:99.25pt;margin-right:99.15pt'> <p class=MsoNormal align=center style='text-align:center;border:none; mso-border-bottom-alt:solid windowtext .75pt;padding:0cm;mso-padding-alt:0cm 0cm 1.0pt 0cm'><span style='font-size:6.0pt;font-family:Tahoma'><o:p> </o:p></span></p> </div> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt; mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh: .5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'> <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB style='font-family:Tahoma;mso-ansi-language:EN-GB'>DILIGENCES</span></b><span style='font-family:Tahoma'><o:p></o:p></span></p> </td> <td width=248 valign=top style='width:185.8pt;border:solid windowtext 1.0pt; border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt: solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$dil<o:p></o:p></span></p> </td> </tr> <tr style='mso-yfti-irow:1'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt; padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB style='font-family:Tahoma;mso-ansi-language:EN-GB'>SECRETARIAT</span></b><span style='font-family:Tahoma'><o:p></o:p></span></p> </td> <td width=248 valign=top style='width:185.8pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$secret<o:p></o:p></span></p> </td> </tr> <tr style='mso-yfti-irow:2'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt; padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB style='font-family:Tahoma;mso-ansi-language:EN-GB'>FRAIS</span></b><span style='font-family:Tahoma'><o:p></o:p></span></p> </td> <td width=248 valign=top style='width:185.8pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$frais<o:p></o:p></span></p> </td> </tr> <tr style='mso-yfti-irow:3'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt; padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader style='tab-stops:35.4pt'><b><span lang=EN-GB style='font-family:Tahoma;mso-ansi-language:EN-GB'>DEBOURS</span></b><span style='font-family:Tahoma'><o:p></o:p></span></p> </td> <td width=248 valign=top style='width:185.8pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$deb<o:p></o:p></span></p> </td> </tr> <tr style='mso-yfti-irow:4'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt; padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>Total HT<o:p></o:p></span></p> </td> <td width=248 valign=top style='width:185.8pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$tht<o:p></o:p></span></p> </td> </tr> <tr style='mso-yfti-irow:5'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt; padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>TVA<o:p></o:p></span></p> </td> <td width=248 valign=top style='width:185.8pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$tva<o:p></o:p></span></p> </td> </tr> <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'> <td width=461 valign=top style='width:345.6pt;border:solid windowtext 1.0pt; border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt; padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><b><span style='font-size:12.0pt;font-family:Tahoma'>Total TTC</span></b></p> </td> <td width=248 valign=top style='width:185.8pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> <p class=MsoHeader align=right style='text-align:right;tab-stops:35.4pt'><span style='font-family:Tahoma'>$ttc<o:p></o:p></span></p> </td> </tr> </table> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoNormal style='margin-right:-.1pt;tab-stops:right 11.0cm 411.1pt 18.0cm'><b><span lang=EN-GB style='font-family:Tahoma;mso-ansi-language:EN-GB'><o:p> </o:p></span></b></p> <h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration: none;text-underline:none'>Date d'échéance : $datech<o:p></o:p></span></h1> <h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration: none;text-underline:none'><o:p> </o:p></span></h1> <h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration: none;text-underline:none'><o:p> </o:p></span></h1> <h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration: none;text-underline:none'><o:p> </o:p></span></h1> <h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration: none;text-underline:none'><o:p> </o:p></span></h1> <h1><span style='font-weight:normal;mso-bidi-font-weight:bold;text-decoration: none;text-underline:none'><o:p> </o:p></span></h1> <h1 align=right style='text-align:right'><span style='font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p> </o:p></span></h1> <h1 align=right style='text-align:right'><span style='font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p> </o:p></span></h1> <h1 align=right style='text-align:right'><span style='font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p> </o:p></span></h1> <h1 align=right style='text-align:right'><span style='font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p> </o:p></span></h1> <h1 align=right style='text-align:right'><span style='font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'>Le service Comptabilité<o:p></o:p></span></h1> <h1 align=right style='text-align:right'><span style='font-weight:normal; mso-bidi-font-weight:bold;text-decoration:none;text-underline:none'><o:p> </o:p></span></h1> <b><u><span style='font-size:10.0pt;font-family:Tahoma;mso-fareast-font-family: "Times New Roman";mso-ansi-language:FR;mso-fareast-language:FR;mso-bidi-language: AR-SA'><br clear=all style='page-break-before:always'> </span></u></b> <h1 align=right style='text-align:right'><span style='font-size:12.0pt'>Détail des prestations facturées - Affaire : $nomdossier<o:p></o:p></span></h1> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'><o:p> </o:p></span></p> <p class=MsoHeader style='tab-stops:35.4pt'><span style='font-family:Tahoma'>$tableaudetails<o:p></o:p></span></p> </div> </body> </html>
J'ai veillé à nommer toutes mes variables dans template.htm par le même nom que j'utiliserais dans export.php
Voici le fichier export.php
<? //Je suppose que vous avez déjà les variables php renseignées. Que ce soit un renseignement statique ou de données provenant de la base de données. Nommez vos variables selon les noms contenus dans le fichier template.htm // Je capture et mémorise le contenu du fichier template.htm $content=file_get_contents('template.htm'); // Attention au chemin d'accès au fichier template. ici, il est dans le même répertoire que export.php sinon donnez le chemin correct. //Maintenant, je remplace une à une les variables. Méthode fastidieuse mais "Cameroun est chaud, on va faire comment". Optimisera au fil de l'expérience $content=str_replace('$titrefacture',$titrefacture,$content); $content=str_replace('$titre',$titre,$content); $content=str_replace('$nomclient',$nomclient,$content); $content=str_replace('$adresseclient',$adresseclient,$content); $content=str_replace('$nomclient',$nomclient,$content); $content=str_replace('$ville',$ville,$content); $content=str_replace('$pays',$pays,$content); $content=str_replace('$datejour',$datejour,$content); $content=str_replace('$nomdossier',$nomdossier,$content); $content=str_replace('$numfacture',$numfacture,$content); $content=str_replace('$datefacture',$datefacture,$content); $content=str_replace('$dil',$dil,$content); $content=str_replace('$secret',$secr,$content); $content=str_replace('$frais',$frais,$content); $content=str_replace('$deb',$deb,$content); $content=str_replace('$tht',$tht,$content); $content=str_replace('$tva',$tva,$content); $content=str_replace('$ttc',$ttc,$content); $content=str_replace('$datech',$datech,$content); $content=str_replace('$tableaudetails',$tableaudetails,$content); // La suite du fichier à l'étape 3 ?>
Cette étape consiste à créer le fichier physique sur le disque dur et y accéder.
// Code à insérer dans l'étape 2 EN FIN DE CODE $filename="facture.doc"; touch($filename); if (is_writable($filename)) { if (!$handle = fopen($filename, 'a')) { echo "Impossible d'ouvrir le fichier ($filename)"; exit; } if (fwrite($handle, $content) === FALSE) { echo "Impossible d'écrire dans le fichier ($filename)"; exit; } echo "<a href='$filename'>Télécharger le fichier</a>"; fclose($handle); } else { echo "Le fichier $filename n'est pas accessible en écriture."; }
ET VOILA !!!!!
Vous avez un fichier word tout beau avec vos données fusionnées.
Vous avez un affichage de votre fichier en mode "WEB" ? Changez l'affichage en mode "PAGE" pour voir votre fichier word comme d'habitude.
Pour toute question ou recommandation, adressez moi un mail sigapherve at gmail point com et donnez moi le temps de traverser toute la forêt qui me sépare de mon cyber café (env 48h).
Tutoriel proposé par Hervé SIGAP
Douala - Cameroun.