Remplir un fichier Word type avec des valeurs PHP

Remplir un fichier Word type avec des valeurs PHP - PHP - Programmation

Marsh Posté le 20-03-2006 à 13:23:07    

Bonjour à tous  :hello: ,
 
Voici ce qu'il ma été demandé de faire :
le but est de remplir un fichier Word existant à certains endroits et ce en utilisant des variables PHP.
 
Je m'explique :  
--> c'est un programme de gestion de flux (stock )  écrit en PHP.
--> quand un dossier complet est traité, le responsable peut envoyer diverses lettres au choix.
--> ces lettres sont tous référencées dans un dossier spécial. Ce sont des lettres types avec des "blancs" du genre expéditeur, dossier n°XXX.
--> quand l'utilisateur en cours clique sur générer le courrier, l'application devrait idéalement ouvrir le document Word associé et remplir les "blancs" avec les variables PHP du programme.
--> de plus, une fois le document rempli, ce dernier devrait pouvoir rester ouvert en mode édition ( ne pas le laisser figer )
 
Mes questions sont donc :  
Word et PHP permettent-ils de communiquer de cette manière ?  
Si oui comment faire pour se placer à un endroit spécifique du fichier pour écrire les variables souhaitées ?
 
Merci par avance à tous de votre collaboration.

Reply

Marsh Posté le 20-03-2006 à 13:23:07   

Reply

Marsh Posté le 20-03-2006 à 14:26:31    

la seule solution que j'ai trouvé ( il y a peut etre mieux )  
montage de ta base de données dans acces
fusion dans word a partir de acces
impression dans un nouveau document ( pour permettre l'edition )


Message édité par flo850 le 20-03-2006 à 14:26:50

---------------

Reply

Marsh Posté le 20-03-2006 à 16:57:52    

Bonjour,
 
Sinon tu as un autre truc que j'ai utilisé mais avec des fichiers RTF
tu entre des valeur typer dans ton fichier par exemple XXXNOMCLIENTXXX pour le nom du client
et par un simple strremplace  tu remplace cette valeur par celle que tu veux :)
 
et tu fait ca pour chaque valeur que tu désire changer, c long :sweat: mais ca marche ;)
 
PS : je ne suis pas tres sur de la syntaxe de la fonction strremplace !!!


Message édité par stef_dobermann le 20-03-2006 à 17:01:28

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 20-03-2006 à 17:04:04    

et la par contre tu travaille directement avec la gestion des fichiers fonction :
open();
read();
close();
 
pour copier un fichier je te laisse le soin de chercher le nom de la fonction qui doit normalement commencer par "copy" ;)
comme ca tu pourras copier un fichier, l'ouvrir puis l'enregistrer sans PB ;)


Message édité par stef_dobermann le 20-03-2006 à 17:05:08

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 21-03-2006 à 08:52:36    

Merci à tous.
J'ai trouvé également une autre méthode qui consiste à créer un fichier RTF à partir d'un original au format DOC.
Ouvrir le RTF ainsi crée, échapper tous les \ par \\ pour éviter que PHP ne considère certains caractères comme spéciaux puis faire un
fwrite($nom_fichier,"tout le code rtf dans lequel on aura pris soin de remplacer certaines valeurs par des variables du type $variable)
 
Merci à tous

Message cité 1 fois
Message édité par TomZ le 21-03-2006 à 08:52:56
Reply

Marsh Posté le 21-03-2006 à 13:12:57    

TomZ a écrit :

Merci à tous.
J'ai trouvé également une autre méthode qui consiste à créer un fichier RTF à partir d'un original au format DOC.
Ouvrir le RTF ainsi crée, échapper tous les \ par \\ pour éviter que PHP ne considère certains caractères comme spéciaux puis faire un
fwrite($nom_fichier,"tout le code rtf dans lequel on aura pris soin de remplacer certaines valeurs par des variables du type $variable)
 
Merci à tous


 
 
ce que j'ai écris dans mon primer poste ;)


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 11-04-2006 à 14:21:35    

Bonjour tout le monde !  
 
et désolé de faire "remonter" ce post... mais j'en ai vraiment besoin... j'ai bien fait le nécessaire avant de poster mais g cherché en vain une solution concrete...
 
en fait, je suis etudiant en 2eme année de dut info et je suis actuellement en stage a la sncf, ou je dois apparemment effectuer le meme boulot que tomZ  
- a savoir a travers de formulaires html/php le remplissage automatique de documents word ou rtf (peu importe mais apparemment on se porterait davantage vers le rtf  ;) ) après avoir récupéré les variables en php toujours dans le meme but de generer une lettre type avec une contrainte graphique tres stricte...
 
du coté de la recuperation des variables aucun pb ce sont des formulaires tout simples... mais une fois c variables en main, que faire? j'ai lu sur le forum que tu avais reussi à générer un doc rtf a partir d un doc original, cela, tu le fais en php (si oui comment?)? et une fois fait (le fichier donc dynamique car pas sauvegardé), comment fais tu pour remplacer les chaines type "xxxnomxxx" contenues ds celui-ci par les variables voulues? tu recuperes le code du rtf (c precisement cette partie que je n'ai pas trop compris)? c'est a dire? et ensuite d'accord un strreplace ça ça passe  :p...  
 
je vous remercie enormement d'avance vous me sauveriez vraiment du petrin.... ça fait 2 semaines que jessaie de resoudre ce pb...
encore merci...


Message édité par Cyrilou63 le 11-04-2006 à 14:23:05
Reply

Marsh Posté le 05-05-2006 à 16:17:42    

a mon avis, et désolé de ne répondre que maintenant,
 
- tu copy le fichier original dans celui qui sera le définitif,
- tu ouvre le fichier en écriture,
- tu utilise la fonction php str_replace ou strtr pour ton remplacement de variable par les bonnes info
- tu enregistre ton fichier,
- tu reviens sur le forum nous remercier ;)


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 16-05-2006 à 21:20:42    

Désolé pour la version US mais ça fonctionne au poil !!!!! sous PHP5  UNIQUEMENT
[b][/b]  
[b][/b]  
Creating Word Documents on the Fly
[url=http://www.phpbuilder.com/contact.php3?contact=amri_ls_at_yahoo.com">

Reply

Marsh Posté le 16-05-2006 à 21:22:29    

Creating Word Documents on the Fly
Khairul Amri Yunus  
Introduction
Printing HTML pages directly from browsers usually does not give the best printing output, compared to output from word processors such as Microsoft Word. For web-based systems that generate letters, reports and documents, an output that looks authentic and original is very important. Furthermore, printing output directly from browsers is usually dependant on the browser's configuration. Therefore web-based applications may face difficulties in giving the best printing output especially when dealing with large user base.  
This article provides a guideline on how to generate documents and letters in MS Word format using a pre-defined template. My customer (a government agency) required for Reminder Letters to be generated automatically in MS Word format from the Loan Management System that I delivered to them. Using this approach, they can generate a Reminder Letter for each loan which then can be printed nicely and saved for future reference.
This solution can be accomplished using COM extension. Please note that the server running this code MUST have MS Word installed.
Overview
Lets start with the big picture. This is how it works:
1. First, we need to prepare a MS Word document (*.doc) that contains the sample output. The content of the Reminder Letter is normally the same, except for, in each case we need to put the Applicant Name, Loan Reference Number and Today's date in the letter to be generated.  
2. In this MS Word template document, we need to define places where PHP should insert the actual value (such as one pulled from database or evaluated from code). This can be done using the "Bookmark" feature in MS Word documents.  
3. Our PHP code will substitute the Bookmark with the actual value.  
4. And finally, we save it as a new document.  
Preparing the MS Word Template
This step is actually simple, all we need is a MS Word document (*.doc) that contains the sample output and Bookmarks.  
To create a Bookmark in a MS Word document, click on Insert/Bookmark. You can highlight a word or sentence and make them a Bookmark. In this code, we will substitute the Bookmark with the actual value, therefore the word you highlighted and saved as a Bookmark will be substituted.
A Bookmark name can only contain letters, numbers and underscores. To see all of bookmarks in the document, click on Tools/Options and check Bookmarks under Show group in the View tab.  
The code we use in the next section just substitutes a specified bookmark with text, therefore the formatting, images, tables and etc will not be lost.
 
Substituting with the actual value
The following code opens the specified MS Word template document, substitutes the value and saves it as a new file. We defined a Bookmark named "TODAYDATE" in the document, which will be replaced with today's date.
 
<?php
//1. Instanciate Word
$word = new COM("word.application" ) or die("Unable to instantiate Word" );
//2. specify the MS Word template document (with Bookmark TODAYDATE inside)
$template_file = "C:/reminder.doc";
//3. open the template document
$word->Documents->Open($template_file);
//4. get the current date MM/DD/YYYY
$current_date = date("m/d/Y" );
//5. get the bookmark and create a new MS Word Range (to enable text substitution)
$bookmarkname = "TODAYDATE";
$objBookmark = $word->ActiveDocument->Bookmarks($bookmarkname);
$range = $objBookmark->Range;
//6. now substitute the bookmark with actual value
$range->Text = $current_date;
//7. save the template as a new document (c:/reminder_new.doc)
$new_file = "c:/reminder_new.doc";
$word->Documents[1]->SaveAs($new_file);
//8. free the object
$word->Quit();
$word->Release();
$word = null;
?>
That's it. Open the new document (c:/reminder_new.doc) and you will see today's date at the bookmark's location.  
1. Initially we instantiated the Word object using this code:
<?php
$word = new COM("word.application" ) or die("Unable to instanciate Word" );
?>
2. Then we specified the template document that contains the sample output and the Bookmark TODAYDATE:
<?php
$template_file = "C:/reminder.doc";
?>
3. Next we opened the document:
<?php
$word->Documents->Open($template_file);
?>
4. Then we got today's date using date() function. The Bookmark TODAYDATE will be replaced with this value:
<?php
$current_date = date("m/d/Y" );
?>
5. Next we found the Bookmark in the document and created a new MS Word Range. Range is used to perform text substitution or insertion.
<?php
$bookmarkname = "TODAYDATE";
$objBookmark = $word->ActiveDocument->Bookmarks($bookmarkname);
$range = $objBookmark->Range;
?>
6. Then we substituted the bookmark with actual value:
<?php
$range->Text = $current_date;
?>
7. Saved the template as a new document (c:/reminder_new.doc)
<?php
$new_file = "c:/reminder_new.doc";
$word->Documents[1]->SaveAs($new_file);
?>
8. Finally, we free the object:
<?php
$word->Quit();
$word->Release();
$word = null;
?>
 
Improving the code
The above code will return an error if the specified bookmark is not found in the document. To check whether the bookmark exists in the template document, use this:
 
<?php
if($word->ActiveDocument->Bookmarks->Exists($bookmarkname))  
{
    //then create a Range and perform the substitution<br>
    $objBookmark = $word->ActiveDocument->Bookmarks($bookmarkname);
    $range = $objBookmark->Range;
    //now substitute the bookmark with actual value
    $range->Text = $current_date;
 
}
?>
The approach above replaces Bookmarks with the actual value, therefore the word highlighted and defined as the bookmark will be deleted. If you want to insert text before the bookmark, use the following:
 
<?php
$range->InsertBefore("Today's date is: " );
?>
Alternatively, to insert text after the bookmark, use this:
 
<?php
$range->InsertAfter("Have a nice day!" );
?>
To select all of the text within the template document, use the following:
 
<?php
$pagecontent = $word->ActiveDocument->Content->Text;
?>
To automatically load the document, use header functions (add this to the end of the PHP file):
 
<?php
header('Content-Type: application/msword');
header("Content-Disposition: attachment; filename=\"Reminder New.doc\"" );
readfile($new_file);
?>
Alternatively, to prompt Open/Save dialog box, use:
 
<?php
header('Content-Type: application/msword');
header("Content-Disposition: attachment; filename=\"Reminder New.doc\"" );
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
readfile($new_file);
?>
Note that the above two examples may not work on certain browsers and/or versions.
You may want to terminate/kill WINWORD.EXE instance if the code triggers an error or terminates unexpectedly. Run Windows Task Manager and end WINWORD.EXE instance.
That's it. Feel free to share your thoughts and improved versions of the above code.  
Khairul Amri Yunus
Kometsoft (M) Sdn. Bhd.
 

Reply

Marsh Posté le 16-05-2006 à 21:22:29   

Reply

Marsh Posté le 16-05-2006 à 21:29:35    

Désolé, "j'encombre" un peu le forum mais j'ai tellement galéré avec ce problème que j'aurai aimé qu'on me donne la soluce....
je cite néanmoins mes sources
http://www.phpbuilder.com/columns/yunus20031124.php3
Donc le seveur DOIT être sous PHP5, et Word DOIT y être installé.
 
Maintenant je cherche la même chose avec le writer d'OpenOffice...
Si qqun connait....

Reply

Marsh Posté le 17-05-2006 à 14:11:07    

c'est beaucoup plus simple avec OpenOffice. Le format de fichier odt ( ou sxw si tu es encore en 1.X) est en fait un archive contenant des fichiers xml.  
Pour récupérer le "contenu" de ton fichier, penche toi sur le ... suspense ... content.xml

Reply

Marsh Posté le 10-07-2006 à 02:27:24    

Voilà je continue ce fils de discussion avec une façon simple d'éditer un fichier word existant.
 
Etape 1 :
Créer votre fichier word sous forme de template. Par exemple chaque champ variable de votre document word pourra être codé de la sorte {destinataire} {expediteur} {objet}... Par la suite ces "variables" seront fusionnés avec vos données (formulaires, base de données...)
 
Etape 2 :
Enregistrer votre fichier Word au format html. C'est là en fait que réside toute l'astuce.
Pour cela faite Fichier > Enregistrer sous... et choisissez l'option Page web (*.htm, *.html)
 
Etape 3  :
Faites les traitements php nécessaires pour ouvrir votre document html puis avec des regex remplacez vos variables dans le template. Si vous avez un peu de mal vous pouvez utiliser un moteur de template (comme l'excellent tinybutstrong --> http://www.tinybutstrong.com/fr/).
Récupérer le contenu généré dans une variable.
 
Etape 4 :
Envoyer votre fichier ainsi généré en sortie grâce au code suivant.

Code :
  1. $TempFilename = 'temp.doc';
  2. $FinalFilename  = 'new.doc';
  3. $content = $recup; /* variable avec le contenu récupérer à l'étape précédente */
  4.   /* Enregistrement du document formaté sur le disque */
  5.   if (!$handle = fopen($TempFilename , 'a+')) {
  6.          echo "Impossible d'ouvrir le fichier ($TempFilename )";
  7.          exit;
  8.     }
  9.   if (fwrite($handle, $content) === FALSE) {
  10.        echo "Impossible d'écrire dans le fichier ($TempFilename )";
  11.        exit;
  12.     }
  13.    fclose($handle);
  14.    /*  Ouverture d'une boite de dialogue pour ouvrir/sauvegarder le fichier */
  15.    header("Content-Type: application/msword" );
  16.    header('Content-Disposition: attachment; filename="'.$FinalFilename .'"');
  17.    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  18.    readfile($TempFilename);
  19.    /* Suppression du document */
  20.    unlink($TempFilename);


 
Voilà vous obtenez un beau fichier Word avec tous vos champs fusionnés. Une technique simple qui permet de ne pas recourir aux objet com.

Reply

Marsh Posté le 19-07-2006 à 15:19:03    

Bonjour, j'avais fait un beau document du genre, mais avec des images... comme par bonheur, dans les fichiers word, ce sont des métafichiers, évidemment, quand on utilise la sortie vers un document .doc, ça ne fonctionne pas.
 
J'ai donc un peu trifouillé le template avec un éditeur de code, supprimé deux trois trucs, modifié les balises <img> pour y intégrer un chemin absolu de fichier image...
 
(par exemple http://www.google.fr/intl/fr_fr/images/logo.gif , pour être sûr)
 
 Alors quand j'ouvre le .doc, et que j'ai une connec Internet, tout va bien, mais dès que y'a plus de connexion, je me retrouve sans images...
 
La boîte pour laquelle je développe  a tous ses PC sur le Web, donc vous allez me dire que c'est pas grave, mais moi ça me perturbe... et si y'a une panne web ? Ils font comment pour imprimer leurs courriers ?
 
Bref, existe-t'il un autre moyen de faire en sorte que les images s'affichent correctement ?


Message édité par Daelith le 19-07-2006 à 15:33:35
Reply

Marsh Posté le 20-07-2006 à 10:56:46    

Salut, je sais pas qi ça pourra t'aider mais j'ai eu la meme interrogation y'a 2 semaines et voila ce que l'on m'a donné. Une classe php qui permet de générer des documents RTF. Elle s'appelle php2rtf : disponible ici >> http://pnine.free.fr/rtf2php/
 
Seul problème, la documentation n'est pas très complète et j'ai des difficultés pour mettre en place des tableaux, si tu y arrive n'hésite pas.
J'espere que ca pourra t'aider

Reply

Marsh Posté le 29-07-2006 à 16:19:31    

En créant un template au format .mht (html à fichier unique) ça marche très bien... mais y'a un inconvénient majeur, ça marche qu'avec des words supérieurs à word 97... donc dans mon cas c'est rapé.
 
Si vous avez office XP dans la boîte et que c'est pour un Intranet... Amusez-vous bien, ça fonctionne parfaitement.

Reply

Marsh Posté le 13-09-2006 à 16:13:08    

Bon, après tests divers : Créer un template au format rtf, l'ouvrir, remplacer les valeurs cibles par le contenu des variables, faire une sortie, en précisant bien qu'il s'agit d'un .doc. Word se chargera lui-même de la conversion au bon format à l'ouverture  
 
 
Testé sous WinXP Win 2000Pro Win 98 SE sous IE/Mozilla et sous MacOSX IE/Safari -au passage Safari ne gère pas toutes les propriétés des css- avec des sorties en Word 97 à word 2003. (word 10 sous Mac).
 
Bilan ? Parfaitement fonctionnel. Par contre, si vous désirez installer un tableau à nombre de cases variables... c'est problématique.

Reply

Marsh Posté le 17-09-2006 à 21:15:58    

Daelith a écrit :

Bon, après tests divers : Créer un template au format rtf, l'ouvrir, remplacer les valeurs cibles par le contenu des variables, faire une sortie, en précisant bien qu'il s'agit d'un .doc. Word se chargera lui-même de la conversion au bon format à l'ouverture  
 
 
Testé sous WinXP Win 2000Pro Win 98 SE sous IE/Mozilla et sous MacOSX IE/Safari -au passage Safari ne gère pas toutes les propriétés des css- avec des sorties en Word 97 à word 2003. (word 10 sous Mac).
 
Bilan ? Parfaitement fonctionnel. Par contre, si vous désirez installer un tableau à nombre de cases variables... c'est problématique.


[:coch]

Reply

Marsh Posté le 21-09-2006 à 09:42:27    

Avec des \par dans l'insertion de texte, ça saute une ligne :D
 
Je vais bien finir par trouver quoi mettre pour ajouter une ligne ou une case à un tableau, vous inquiétez pas... (en même temps, ça ne m'est pas utile :D )
 
Et quand j'aurais trouvé, je mettrai tout ça en ligne... :bounce:

Reply

Marsh Posté le 21-06-2007 à 16:05:01    

Daelith a écrit :

En créant un template au format .mht (html à fichier unique) ça marche très bien... mais y'a un inconvénient majeur, ça marche qu'avec des words supérieurs à word 97... donc dans mon cas c'est rapé.
 
Si vous avez office XP dans la boîte et que c'est pour un Intranet... Amusez-vous bien, ça fonctionne parfaitement.


 
Bjr,
 
je débarque complètement dans ce genre de choses, mais ai un besoin analogue :  
- avec php, ouvrir documents texte (word, rtf, openOffice, selon ce qui sera le + facile)
- remplacer dedans des chaines par des données de la base MySQL
- afficher le résultat dans le navigateur
 
cette histoire de template m'intéresse donc, mais là je ne vois pas du tout comment faire --> quelques infos sur procédure pour une newbie dans les échanges PHP-WORD ?
 
Merci d'avance
 
Corinne
 
PS : j'ai aussi lu dans  ce thread un topo sur une extension php appelée "COM" : cherché, mais rien trouvé dessus. Payant ? Comment se procurer ce petit bijou ? Merci

Reply

Marsh Posté le 24-06-2007 à 22:30:23    

Bon, c'est fouilli là.
 
1) Tu génères un .doc en te basant sur le mimetype que tu envoies à ton navigateur Internet (à toi de chercher le bon)
 
2) Tu génères un .doc en XML avec l'équivalent du langage SpreadSheetML (Excel 2003) mais pour Word
 
3) Tu génères un .doc avec les objets COM (fourni avec PHP5). Nécessite un serveur sous Windows car tu pilotes une application Word (un peu lourd quand même).
 
4) Tu configures ta bd sous PhpMyAdmin pour qu'elle soit accessible depuis l'exterieur par un utilisateur (serveur à mette sur '%')
Tu installes un connecteur MyODBC que tu configures correctement, pour le lier à ta bd.
Dans ton .doc, tu paramètres des champs fusions pour les faire pointer vers les champs de ta BD puis tu écris une requete SQL (voir publipostage). Lorsque les gens veulent faire un publipostage (c'est un menu dans Word : Outils/Fusion et publipostage), les champs sont remplacés et les courriers générés (un courrier pour chaque ligne ramenée par ta requete).


Message édité par CyberDenix le 11-01-2008 à 18:57:26

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 09-10-2007 à 16:08:22    

Bonjour, moi aussi j'ai un problème avec les objets COM. J'ai suivi le tutorial de phpbuilder et... ca ne marche pas.
Je tourne sous WAMP5 (donc avec php5). En fait, lance que j'execute le code, il ne ne passe rien... Le processus WINWORD est bien lancé, mais c'est tout ce que j'obtiens. Bref, je suis perplexe...
Si quelqu'un a une idée...

Reply

Marsh Posté le 10-10-2007 à 11:21:42    

Pour openoffice : http://ftp.roedu.net/mirrors/sf.ne [...] HP_0.4.zip
 
Jamais testé personnellement par contre.

Reply

Marsh Posté le 10-10-2007 à 11:31:44    

Je suis pas vraiment "fan" d'open office, et l'équipe qui devra utiliser les documents type non plus...

Reply

Marsh Posté le 11-01-2008 à 12:33:23    

Perso j'utilise des fichiers .rtf MAIS mon problème est que je n'arrive pas à fusionner plusieurs pages.
 
Ex :  
- j'ai un document à remplir d'une page, je créer mes champs variables {{NOM}} {{PRENOM}} ... est j'enregistre sous format RTF.
- Si je n'ai qu'un seul document à créer tout va bien  
- mais si j'ai une liste de 100 personnes, je n'arrive pas à générer 1 seul fichier résultat (format RTF) qui contien l'ensemble de mes fiches.
 
Quelqu'un à une idée ?
 
D'avance merci


---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 11-01-2008 à 18:53:18    

Ouais, lis mon post, 4ème solution.  
Tu fais un .doc avec des champs fusion.

Message cité 1 fois
Message édité par CyberDenix le 11-01-2008 à 18:53:34

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 11-01-2008 à 21:04:07    

CyberDenix a écrit :

Ouais, lis mon post, 4ème solution.  
Tu fais un .doc avec des champs fusion.


 
Il faut parametrer ODBC sur chaque poste ?


Message édité par snike le 11-01-2008 à 21:04:28

---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 12-01-2008 à 19:16:18    

Ouais.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 08-02-2008 à 16:02:49    

bonjour je souhaiterais récupéré dans une variable php les propriétés d'un document word si vous avez une solution car je ne trouve rien  
d'avance merci

Reply

Marsh Posté le 12-02-2008 à 10:24:04    

kitch18 a écrit :

bonjour je souhaiterais récupéré dans une variable php les propriétés d'un document word si vous avez une solution car je ne trouve rien  
d'avance merci


c'est pas la peine de poster sur 2 topics. Je t'ai répondu dans l'autre.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-08-2008 à 16:13:37    

Je vais rouvrir ce topic pour tenter d'obtenir la réponse à une question qui a été lancée mais sans résultat.
 
 

Daelith a écrit :

Bon, après tests divers : Créer un template au format rtf, l'ouvrir, remplacer les valeurs cibles par le contenu des variables, faire une sortie, en précisant bien qu'il s'agit d'un .doc. Word se chargera lui-même de la conversion au bon format à l'ouverture  
 
 
Testé sous WinXP Win 2000Pro Win 98 SE sous IE/Mozilla et sous MacOSX IE/Safari -au passage Safari ne gère pas toutes les propriétés des css- avec des sorties en Word 97 à word 2003. (word 10 sous Mac).
 
Bilan ? Parfaitement fonctionnel. Par contre, si vous désirez installer un tableau à nombre de cases variables... c'est problématique.


 
Quelqun aurait-il trouvé comment faire pour utiliser des tableaux à nombre de cases variables?
Je ne demande pas comment alimenter le doc word, la réponse a déjà été donnée
 
Merci d'avance

Reply

Marsh Posté le 19-08-2008 à 11:51:52    

Bon et bien j'ai trouvé la réponse a ma question par mes propres moyens  :)  
 
Je la met ici, ca pourra surement servir à quelqun. Un exemple avec un tableau de largeur 3 et hauteur 2
 
//en considérant que $word est l'instance de word lancée
$word->Selection->TypeText("Testing 1-2-3..." );
$range = $word->Selection->Range;
$word->Selection->Tables->Add($range,"2","3" );
 
Bien sur dans 'Add($range,"2","3" );' on peut remplacer 2 et 3 par des variables de son choix.
Par contre je cherches encore un moyen de placer ce tableau au bon endroit dans le document word


Message édité par ysnake le 20-08-2008 à 16:09:53
Reply

Marsh Posté le 30-07-2011 à 11:07:07    

Bonjour à tous, j'essai de comprendre comment faire pour créer un fichier word mais je butte sur un problème:
 

Citation :


Etape 3  :  
Faites les traitements php nécessaires pour ouvrir votre document html puis avec des regex remplacez vos variables dans le template.
Récupérer le contenu généré dans une variable.  
 
Etape 4 :  
Envoyer votre fichier ainsi généré en sortie grâce au code suivant.  


 
Pouvez-vous me passer, à titre d'exemple, des fichiers qui traite l'étape 3 et comment lier l'étape 3 et 4.
Merci d'avance.
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed