écrire dans un excel depuis des variables PHP

Résolu
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
--
Cordialement,
Roche Corentin

4 réponses

  1. Contributeur
    bonjour, pour commencer, laissons de coté le téléchargement automatique.
    qu'as-tu essayé?
    1. 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
      1. Pour info :
        - Le fichier .xls est placer au même endroit que le .php
        - J'ai essayer en .xlsx aussi
      2. Contributeur
        tu ne décris pas en quoi le code ne fait pas ce que tu attends.
      3. @yg_beJuste 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..
      4. @yg_beNon sinon j'aurais pas ouvert de forum d'aide...



        Bien sur l'Excel n'est pas modifier...
    2. Modérateur
      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.

      1. 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 !
      2. 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
      3. @CorentinRocheBon 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');


    3. 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/comment-installer-et-utiliser-composer/

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