2017-06-27 1 views
-1

Actuellement, j'ai des problèmes avec rowClone et blockClone spécialement. Dans la documentation, ils disent que si on utilise rowClone sur une table avec des cellules fusionnées, la fonction (rowClone) va cloner les lignes adjacentes, donc j'ai dit, d'accord, ça a l'air plutôt sympa. J'ai donc fait une table comme vous pouvez le voir dans l'image 1, mais quand j'exécute le script, la fonction rowClone ne fonctionne pas comme je m'y attendais. Puis en lisant la documentation plus en profondeur, j'ai réalisé qu'il y avait une autre fonction appelée blockClone, mais quand j'ai essayé de l'utiliser, surprise, ça ne marche pas non plus.Avez-vous une implémentation utile de rowClone, blockClone de phpWord (https://github.com/PHPOffice/PHPWord)?

Enfin, j'ai commencé à chercher des solutions sur Internet, mais rien de ce qu'ils proposent ne m'aide, alors s'il vous plaît, si vous avez des conseils, pirater, quoi que ce soit, s'il vous plaît commenter. Merci d'avance.

Image 1: template (.docx)

Image 2: result after processing the template

Répondre

0

J'ai trouvé le bogue dans le code source. Il y a un espace dans une expression régulière qui fait que la fonction preg_match ne correspond à rien. A la suite, je vous montre comment y remédier:

Voici le code d'origine:

if (!preg_match('#<w:vMerge/>#', $tmpXmlRow) && 
        !preg_match('#<w:vMerge w:val="continue" />#', $tmpXmlRow)) { 
     break; 
} 

Et ce code te fixe.

if (!preg_match('#<w:vMerge/>#', $tmpXmlRow) && 
       !preg_match('#<w:vMerge w:val="continue"/>#', $tmpXmlRow)) { 
      break; 
} 

ci-dessus se situe entre 298 et 302 dans le code source (https://github.com/PHPOffice/PHPWord/blob/develop/src/PhpWord/TemplateProcessor.php)

J'espère que cela pourrait vous aider!