Page 1 sur 1
PHP 5, OLE et les tableaux sous WORD
Posté : 06 juin 2007, 14:52
par Antjac
Bonjour,
Je dois développer un système de génération de documents WORD comprennant des champs simple et des tableaux. En ce qui concerne le remplissage de champs simples, j'utilise les bookmarks ce qui ne pose aucun problème.
Maintenant, je dois aussi remplir des tableaux et au besoin créer de nouvelles lignes dans ces tableaux pour remplir les informations de chaques cellules, or je ne vois pas du tout comment faire via OLE.
Par ailleurs, il arrive que quand je génère un document, cela plante pour une raison ou pour une autre, le processur winword.exe est ghosté et je dois utiliser pstools pour le tuer (processus systeme), comment faire pour éviter cela car le projet tournera sur un serveur déporté.
Merci
Posté : 06 juin 2007, 15:07
par titerm
Si la génération est lancé par un utilisateur via un browser, tu peux toujours essayer d'utiliser le type mime
header('Content-Type: application/msword');
Et tu fais ton tableau en html normalement.
Posté : 06 juin 2007, 15:18
par Antjac
Non parceque j'utilise un template WORD et le chef veut pas que je fasse une conversion HTML, travailler dessus avec php pour le rebalancer en changeant le header...
J'y avais déja pensé
Posté : 06 juin 2007, 15:37
par Antjac
J'ai trouvé un code VB mais je sais pas trop si c'est adaptable avec PHP :
Sub test()
Dim oT As Table 'définition d'un objet tableau...
Dim i As Integer 'index ligne en cours
Dim st As String
Set oT = ActiveDocument.Tables(1) ' Affecte à oT le premier tableau du document actif
For i = 0 To oT.Rows.Count ' boucle dans les lignes du tableau
st = oT.Cell(i, 1).Range ' le contenu d'une cellule se termine par un retour chariot suivit d'une tabulation, j'utilise la variable st, pour "nettoyage"
st = Left(st, Len(st) - 2) 'Supprime les 2 derniers caractére (tabulation )
If st = "A_MODIFIER" Then 'on est sur la ligne à modifier
oT.Cell(i, 3).Range.Text = "On MODIFIE"
End If
Next i 'Fin boucle ligne
End Sub
Une idée ?
Posté : 06 juin 2007, 16:33
par Sékiltoyai
Non parceque j'utilise un template WORD et le chef veut pas que je fasse une conversion HTML, travailler dessus avec php pour le rebalancer en changeant le header...
J'y avais déja pensé
Attention, le code HTML produit par les applications Microsoft, à fortiori, Microsoft Word, est très très sale. Il n'est pas conforme, il est lourd, il va chercher énormément d'éléments sur les serveurs Microsoft...
Posté : 06 juin 2007, 16:38
par Antjac
oui je sais c'est pour ca que j'aimerai éviter, si je n'ai pas d'autres choix je ferai ca, j'ai jusqu'a vendredi soir pour finir la génération de 5 fichiers word conséquents....
Donc si vous avez une idée pour remplir des cellules spécifiques dans un tableau sous word et créer de nouvelles lignes en fonction du nombres de record sortis par ma requete SQL je suis preneur ( et je vous bénirai jusqu'a la fin des temps).
Posté : 07 juin 2007, 09:28
par Antjac
Up désespéré
Posté : 07 juin 2007, 09:35
par titerm
Pourquoi utiliser un template word ? tu peux pas utiliser un template html equivalent ?
Posté : 07 juin 2007, 09:53
par Antjac
Non car ce template sert pour d'autres usages et il ne faut y en avoir qu'un seul
Posté : 07 juin 2007, 10:16
par Antjac
D'autre part, j'ai enregistr2 sous word un .php du fichier html généré j'ai 5000 lignes de codes déguelasse et quand je raffiche sous word, il y a des merdes a l'affichage
Posté : 07 juin 2007, 10:25
par titerm
c'est clair que l'export html de word n'est meme pas une option.
Bah, il te reste la doc msdn hein ...
Tu veux faire du OLE, faut assumer...

bon courage.
http://msdn2.microsoft.com/fr-fr/librar ... s.80).aspx
Posté : 07 juin 2007, 10:30
par Antjac
Merci pour le lien mais le principal problème est que je vois pas comment adapter ca pour du PHP sachant que ce dernier n'est pas typé...
Posté : 07 juin 2007, 10:54
par Antjac
Dois-je me pendre, sauter du troisième étage, envoyer chier mon chef ou y-a-il une solution propre ?
Posté : 07 juin 2007, 10:55
par zeus
Modération :
Antjac, les "up" sont interdits sur PHPFrance.
Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.
Merci de prendre le temps de lire les règlements.
Posté : 07 juin 2007, 11:00
par titerm
l'option 3 me semble sympathique mais ca n'engage que toi
