Remplir un fichier Word type avec des valeurs en POST PHP

Résolu
Tl_IT Messages postés 23 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 9 juin 2015 - 5 juin 2015 à 22:57
christianr06 Messages postés 6 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 7 juillet 2017 - 4 juil. 2017 à 17:26
Bonjour, je suis étudiante en dév info et j'ai un travail à rendre prochainement.
Il s'agit d'un formulaire html qui doit générer un fichier Word par la suite afin que le client l'enregistre sur son pc, le signe et le renvoi dans un mail en tant que pièce jointe.
On m'a conseillé d'utiliser la librairie PHPWord et c'est ce que j'ai fait.
Là je suis au niveau de la génération du doc word.
Le code des différents fichiers utilisés se présente comme suite:

-Formulaire-
<form id="form10" name="form10" method="post" action="exporter.php" onclick="">
          <p>Nom du Client :   
            <input type="text" name="nomClient" id="nomClient" />
          </p>
          <p>Adresse de facturation :
          <input type="text" name="adresseFact" id="adresseFact" />
          </p>
       <input align="right" name="export" type="submit" id="export" value="exporter" />    </form>


-exporter.php-
<?php
require_once '../PHPWord.php';
$PHPWord = new PHPWord();

$document = $PHPWord->loadTemplate('modele.docx');

$nomClient = isset($_POST['nomClient']) ? $_POST['nomClient'] : '';
$adresseFact = isset($_POST['adresseFact']) ? $_POST['adresseFact'] : '';

$document->setValue('nomClient', $nomClient);
$document->setValue('adresseFact', $adresseFact);

$document->save('modele_fin.docx');
?>


-fichier modele.docx-

Nom du client Adresse de facturation
${nomClient} ${adresseFact}

Biensûr, le phpword.php et son dossier sont dans le dossier racine de l'exécution.
Qu'est-ce qui cloche à votre avis?

13 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
8 juin 2015 à 15:07
Je pense avoir trouvé ...


Dans le dossier PhpWord ... modifie le fichier Template.php
Remplace la fonction setvalue existante par celle-ci :
	public function setValue($search, $replace, $limit=-1) {
		if(substr($search, 0, 1) !== '{' && substr($search, -1) !== '}') {
			$search = '{'.$search.'}';
		}
		preg_match_all('/\{[^}]+\}/', $this->_documentXML, $matches);
		foreach ($matches[0] as $k => $match) {
			$no_tag = strip_tags($match);
			if ($no_tag == $search) {
				$match = '{'.$match.'}';
				$this->_documentXML = preg_replace($match, $replace, $this->_documentXML, $limit);	
				if ($limit == 1) {
					break;
				}			
			}
		}
	}


1
Rejoignez-nous