PHP 5, OLE et les tableaux sous WORD

Eléphanteau du PHP | 15 Messages

06 juin 2007, 14:52

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

Mammouth du PHP | 505 Messages

06 juin 2007, 15:07

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.

Eléphanteau du PHP | 15 Messages

06 juin 2007, 15:18

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é

Eléphanteau du PHP | 15 Messages

06 juin 2007, 15:37

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 ?

ViPHP
ViPHP | 5924 Messages

06 juin 2007, 16:33

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...

Eléphanteau du PHP | 15 Messages

06 juin 2007, 16:38

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).

Eléphanteau du PHP | 15 Messages

07 juin 2007, 09:28

Up désespéré

Mammouth du PHP | 505 Messages

07 juin 2007, 09:35

Pourquoi utiliser un template word ? tu peux pas utiliser un template html equivalent ?

Eléphanteau du PHP | 15 Messages

07 juin 2007, 09:53

Non car ce template sert pour d'autres usages et il ne faut y en avoir qu'un seul

Eléphanteau du PHP | 15 Messages

07 juin 2007, 10:16

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

Mammouth du PHP | 505 Messages

07 juin 2007, 10:25

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

Eléphanteau du PHP | 15 Messages

07 juin 2007, 10:30

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é...

Eléphanteau du PHP | 15 Messages

07 juin 2007, 10:54

Dois-je me pendre, sauter du troisième étage, envoyer chier mon chef ou y-a-il une solution propre ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2007, 10:55

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 505 Messages

07 juin 2007, 11:00

l'option 3 me semble sympathique mais ca n'engage que toi :)