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 18/08/2006, 14h38   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
Par défaut [COM] ouvrir Word en php

Bonjour à tous !

je suis en train de bosser sur un intranet dans lequel je souhaite mettre en place un systeme de publipostage avec Word !

Pour le moment j'ai pu seulment mettre en relation Word et la base de donnée Mysql ! Cela marche bien j'arrive à faire des requetes ...

Mon probleme se situe au niveau de l'appel de Word. En effet j'utilise l'objet COM afin d'instancier l'application Word mais ca bug ! J'ai une erreur Apache qui s'affiche a l'ecran et rien ne se produit !

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
28
29
 
<?php
 
$input = "c:\\test.doc";
$word = @new COM("word.application") or die("Unable to instantiate Word");
print "Loaded Word, version {$word->Version}\n<br>";
$word->Visible = 1;
print "Set Word To Visible<br>";
$word->Documents->Open($input);
print "Opened $input<br>";
$word->Activate;
print "Activated Word<br>";
print "Editing Fields<br>";
$Field = $word->ActiveDocument->Fields(1);
$fieldData = $Field->Result;
$fieldData->Text = "Testing";
// Print the document.
$word->Printout();
// closing word
$word->Quit();
// free the object
$word->Release();
$word = null;
 
?>
 
Qqun pourrait-il m'eclairer ?? car la je plante :? 
 
merci !
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 15h44   #2
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 28
Points : 13
Points : 13
et c'est quoi l'erreur apach??
uzumaki_naruto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 15h55   #3
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
l'erreur est la suivante :

Code :
1
2
 
[error] PHP Warning:  (null)(): Invalid ProgID, GUID string, or Moniker: Syntaxe incorrecte\r\n in c:\\program files\\easyphp1-8\\www\\les_contact\\envoyer_lettre.php on line 4
la version php est 4.3.10
apache : Apache/1.3.33 (Win32)

peut etre qu'avec wamp5 ca marchera mais en cherchant sur le net j'ai trouvais plusieurs fois le meme probleme avec les deux versions !!

c'est tu de quoi il s'agit !!??
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 16h01   #4
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut message

comme le message l'indique qu'y a t-il

a envoyer_lettre.php on line 4
  Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 16h10   #5
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
l'erreur se situe a la creation

voici ma ligne 4
Code :
1
2
3
 
 
$word = new COM("word.application") or die("Can't start Word !");
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2006, 10h48   #6
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
je reviens sur ce sujet assez compliqué (lol) !

J'ai regardé pas mal de post de differents sites afin de voir pkoi mon code ne marchait pas.

Il apparait clairement que EasyPHP n'apprecie pas du tout l'objet COM (erreur fatal d'apache !! ).
Alors j'ai testé avec un autre fournisseur nommé WAMP avec la version WAMP5_1.4.4 qui selon certain permet d'effectuer l'ouverture de word en php.

Mais la aussi les tests se sont avérés sans succes ! Ou alors un soupcon de reussite, j'explique:

avec le code suivant :
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
// créer une référence à un nouveau composant COM (Word)
$word = new COM("word.application") or die("Can't start Word !");
 
// afficher la version de Word en cours d'utilisation
echo "Loading Word, v. {$word->Version}";
 
// définir la visibilité de l'application sur 0 (faux)
// pour ouvrir l'application au premier plan, utiliser 1 (vrai)
$word->Visible = 0;
 
// créer un nouveau document dans Word
$word->Documents->Add();
 
// ajouter du texte au nouveau document
$word->Selection->TypeText("Testing 1-2-3...");
 
// enregistrer le document dans le dossier temp de Windows
$word->Documents[1]->SaveAs("comtest.doc");
 
// fermer la connexion au composant COM
$word->Quit();
 
// afficher un autre message à l'écran
echo "Check for the file...";
?>
le fichier "comtest.doc" est bien créé mais mais cela prend pas mal de temps !
puis lorsque je souhaite modifier le chemin de sauvegarde ca ne marche pas !

Voulant absolument ouvrir Word a partir de ma page web me suis redirigé vers la soulution HTML (beurk ! ) . La encore apres plusieurs test avec les ActiveX, et des script jscript... rien de bon ne se passe !

Donc finalement j'ai recup un scrip Vbscript qui Marche (Enfin!!). Mais sous forme de lien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
<HTML>
<head> 
<script language=VBSCRIPT> 
Dim WshShell 
Set WshShell = CreateObject("WScript.Shell") 
</script> 
</head> 
<body> 
<a href="#" onclick=WSHSHELL.RUN("C:\testing.doc"),0,TRUE>Oui vas-y clicques ici!</a>
</body>
</HTML>
le pb qui se pose now ! c'est que cela ne correspond pas du tout a ce que je souhaite faire !
En effet le but de cette manipulation de Word est de faire du publipostage a partir d'un formulaire de recherche (donc PHP !!).

Donc voila si certain sont interressé par ce sujet et on une idée de la facon de faire ???
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2006, 15h58   #7
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 130
Points : 29
Points : 29
Me revoila !

toujours pas de rep en ce qui concerne l'ouverture de word avec php!
Mais je crois que le pb peut etre contourné!

En effet je crois que dès le debut je mis suis mal pris et en fait je pense pouvoir réaliser le publipostage(lettre et non mail) de mon formulaire php de la facon suivante:

1) un fichier de traitement du formulaire qui renvoi dans un fichier texte la requete avec les criteres...
2) afficher sur une page php ou html plusieurs liens ( pour les etiquettes, enveloppes, lettre). chaque lien ouvrira Word avec une fichier correspondant au modèle choisi.
3) (le dur du boulo !) créer une procedure d'événement pour les modeles.
La procedure d'evenement devra faire la connection odbc puis recuperer la requete du fichier texte et l'executer et voilà .....

Le voilà ne vas po tres bien car en fait je me demande comment la fusion sera possible et s'il existe une methode dnas vba pour le faire
Mais bon la ce n'est plus du tout ds la competance du forum.

Si vous voyez un autre moyen pour effectuer l'operation que je souhaite faire n'hésitez pas !!!
Merci d'avance pour votre aide
lecail65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h25.


 
 
 
 
Partenaires

Hébergement Web