écrire dans un excel depuis des variables PHP [Résolu]

Signaler
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
-
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
-
Bonjour/Bonsoir,

Je suis en train de développer une application web qui me permet de préremplir des factures sous Excel.
J'ai vraiment du mal à comprendre comment on inscrit une donnée (une variable en PHP) dans une certaine case d'un excel déjà crée !

J'ai du lire et tester 150 fois ce forum qui en parle :
https://g-ernaelsten.developpez.com/tutoriels/excel2007/?page=modifier-l-existant
Sans résultat positif !


Le but étant de remplir les entête de mes factures nom prénom tel... Via un site WEB
Actuellement tout est enregistrer dans une base de données, mais le soucis n'est pas la.

Je ne voie pas comment faire pour par exemple :

-Partir d'un style de tableau excel. (Stocker sur le serveur web)
-Modifier la case A15 pour y écrire "Client X"
-Puis lancer un téléchargement automatique de l'excel modifier

(Sans la partie récupération des infos de la base de données) Juste quelque chose du genre:
J'ouvre la page web ça écrie "Client X" dans la case A12 puis ça le télécharge dans le navigateur

J'adapterais le code en fonction bien sur :! Pour intégrer la récupération des données depuis la BDD


Merci d'avance

4 réponses

Messages postés
12842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
716
bonjour, pour commencer, laissons de coté le téléchargement automatique.
qu'as-tu essayé?
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22
Bonjour,
Voici le test que j'ai fait, enfin un des nombreux tests :

<?php
$objet = PHPExcel_IOFactory::createReader('Excel5');

$excel = $objet->load('facture.xls');

$sheet = $excel->getSheet(0);

$sheet->setCellValue('A12', 'Corentin');

$writer = PHPExcel_IOFactory::createWriter($excel);
$writer->save('facture-modifier.xls');
?>


Merci de votre retour
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22 >
Messages postés
12842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020

Juste pour comprendre le fonctionnement, j'aimerais écrire "Corentin" dans la case "A12" en utilisant le fichier "facture.xlsx" (Facture Vierge) puis enregistrer le fichier modifier dans un autres fichier nommée "facture-modifier.xlsx"

J’adapterais le code en fonction par la suite..
Messages postés
12842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
716 >
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020

ce code fonctionne-t'il comme tu le souhaites?
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22 >
Messages postés
12842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020

Non sinon j'aurais pas ouvert de forum d'aide...



Bien sur l'Excel n'est pas modifier...
Messages postés
12842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
716 >
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020

as-tu testé avec un code simplifié?
<?php
$objet = PHPExcel_IOFactory::createReader('Excel5');
?>    
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22 >
Messages postés
12842
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020

Idem cette page ne fonctionne pas ....
Le module PHPExcel est a installé sur le serveur WEB ? (Raspberry pour info)
Messages postés
29906
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 octobre 2020
2 900
Bonjour,

Pour commencer, PhpExcel n'est plus maintenu. Il faut le remplacer par PHPSpreadSheet

The project has not be maintained for years and must not be used anymore. All users must migrate to its direct successor PhpSpreadsheet, or another alternative.


Par contre, il te faut un php 7.2 minimum, et composer pour faire l'installation.

Je te laisse le lien vers la documentation :
https://phpspreadsheet.readthedocs.io/en/latest/

Et oui, il faudra installer sur ton serveur... sinon ton code php ne fonctionnera pas.

Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22
Bonjour, merci de ta réponse !

Je vais regarde Phpspreadsheet a premiere vue le lien que tu mas donnée devrais me faire pas mal avance sur mon idée !

Je te tiens au courant merci de l'info en tout cas !
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22
Bon, je galère un peu a l’installation de composer.. et de phpspreadsheet..

J'ai bien fait les 4 commande pour l'installaton de composer :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"


Mais après je ne peux pas exécuter la commande :
composer require phpoffice/phpspreadsheet

Voir le screen si dessous



Idem sur le code présenter par le site PhpSpreadsheet il utilise un require vendor/autoload.php ou puis-je recuperer ce fichier .php ?

Merci encore
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22 >
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020

Bon finalement apres 2H de galérer j'ai réussis a installer PhpSpreadsheet's par contre je n'arrive pas a le faire fonctionner même avec le code dispo sur le site de PhpSpreadsheet's

test.php :
<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
?>   


J'ai essayer de commenter chaque ligne c'est la dernière qui pose soucis :
$writer->save('hello world.xlsx');


Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
22
Bon je clos ce sujet dans le sens ou le soucis a été résolut je sais maintenant qu'il faut utiliser PhpSpreadsheet's et non PHPExcel.

Je vais faire encore des essaie dans le cas ou je n'arrive pas a faire fonctionner PhpSpreadsheet's je rouvrirais un second poste.

Pour l'installation de composer je vous conseil ce lien :
https://www.hostinger.fr/tutoriels/installer-utiliser-composer/

Les info dispo sur le site officel de composer sont pas forcement bien expliquer