Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2007, 15h49   #1
Membre actif
 
Inscription : juillet 2007
Messages : 179
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : juillet 2007
Messages : 179
Points : 159
Points : 159
Par défaut [COM] Word et PHP

bonjour,

j'ai un problème avec un script que j'ai récupéré sur le net pour éditer un document word avec des vides que je voudrais remplir par des champs d'une base mysql,
j'ai récupéré ce script à l'adresse
http://www.phpbuilder.com/columns/yu...3?print_mode=1
je l'ai à peine modifié et ça donne
Code :
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
<?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:\wamp\www\appli_contentieux\lettre1.doc";
//3. open the template document
echo "ouverture fichier:<br>".$fichier."<br>";
$word->Documents->Open($template_file);
 
 
//5. get the bookmark and create a new MS Word Range (to enable text substitution)
$bookmarkname = "nom";
$objBookmark = $word->ActiveDocument->Bookmarks($bookmarkname);
$range = $objBookmark->Range;
//6. now substitute the bookmark with actual value
$range->Text = "moi";
 
//$word->ActiveDocument->Bookmarks("nom")->range->text="MOI";
//7. save the template as a new document 
$new_file = "C:\wamp\www\appli_contentieux\new_lettre1.doc";
$word->Documents[1]->SaveAs($new_file);
echo "sauvegarde fichier word<br>";
//8. free the object
$word->Quit();
$word->Release();
$word = null;
?>
il a marché 3 fois correctement, ensuite j'ai ajouté le code pour récupérer les valeurs de mes champs (select de base) et ça ne fonctionne plus, même avec un retour à la version de base du fichier

le fichier new_lettre1.doc exsite déjà dans le répertoire et les bookmarks aussi dans le fichier lettre1.doc

il ne m'affiche rien dans la page mais au bout d'un moment j'arrête winword.exe dans le gestionnaire des tâches windows et il m'affiche

Code :
1
2
3
4
5
ouverture fichier word
C:\wamp\www\appli_contentieux\lettre1.doc
 
Fatal error: Maximum execution time of 30 seconds exceeded in :
\wamp\www\appli_contentieux\lettre1.php on line 43
il ne m'affiche pas sauvegarde fichier word, il doit sûrement avoir du mal à ouvir le fichier, j'ai éssayé de redémarrer au cas où un processus le gênerait mais ça change rien
j'ai essayé tout ce que je pouvais mais là je vois pas ce que je peux faire de plus,
savez vous comment je peux faire pour résoudre mon problème ou pour arrêter le script en cours et voir ce qui se passe derrière?
merci
sebdu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 16h40   #2
Membre actif
 
Inscription : juillet 2007
Messages : 179
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : juillet 2007
Messages : 179
Points : 159
Points : 159
Par défaut réponse

je crois avoir une partie de solution mais c'est pas très réjouissant

ce serait un bug de wamp
http://www.wampserver.com/phorum/rea...&i=3730&t=3730

mais pourquoi aurait-il marché 3 fois????????

si quelqu'un a une bonne solution... ça ferait du bien, je suis là dessus depuis le milieu de la matinée
sebdu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 12h13   #3
Membre actif
 
Inscription : juillet 2007
Messages : 179
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : juillet 2007
Messages : 179
Points : 159
Points : 159
Par défaut changement

bonjour,

après avoir cherché en vain une solution, je me suis réorienté vers le format rtf mais je suis tombé sur un deuxième os:

j'ouvre mon fichier rtf
je remplace les xxxmotxxx par mes variables
je réécris mon fichier
dès que je veux réécrire mon fichier il me renvoie une erreur
j'affiche ce que j'essaie de rentrer dans mon fwrite et j'ai tout le formatage rtf

Code :
1
2
 
{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1036\deflangfe1036{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
l'erreur qu'il me renvoie est :
Code :
1
2
 
Warning: fwrite(): supplied argument is not a valid stream resource
j'ai même essayé de remplacer les { par des [ les \ par \\ ça ne change rien

voici le code que j'utilise en simplifié
Code :
1
2
3
4
5
6
7
8
$fichier="C:\wamp\www\mon_appli\lettre.rtf";
$new_fichier="C:\wamp\www\mon_appli\lettre1.rtf";
$fp = fopen($fichier, "r+"); 
while (!feof($fp)){
$ligne = fgets($fp);
$ligne=str_replace("xxxadressexxx", $adr, $ligne );
fwrite($new_fichier,$ligne);
}
qu'est ce que je peux faire pour résoudre ça???? (j'ai vu qu'il exsitait une classe php2rtf mais je ne suis pas sûr de l'avoir bien comprise )
sebdu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 12h53   #4
Membre actif
 
Inscription : juillet 2007
Messages : 179
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : juillet 2007
Messages : 179
Points : 159
Points : 159
Par défaut autant pour moi,

j'arrête là, le problème c'est moi en fait je faisais le fwrite avec le nom du fichier pas avec le fopen()
sebdu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web