IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[PHPExcel] formule qui ne s'execute pas a l'ouverture du fichier


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    agriculteur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [PHPExcel] formule qui ne s'execute pas a l'ouverture du fichier
    Bonjour

    je genere des fichiers contenant des formules ( simplement la fonction Somme )
    lorsque j'ouvre le fichier généré ( avec libreoffice sous ubuntu ) le resultat n'est pas calcule.
    si par exemple je duplique la feuille, les calculs sont effectues aussi bien dans la feuille d'origine que dans la nouvelle ...

    est ce que j'aurais oublie qqch ?

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu écris bien SUM et pas SOMME ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    agriculteur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    oui, effectivement j'ai bien utilise SUM
    ( libreoffice converti lui meme les noms de fonctions en français ...
    c'est pour ça que j'ai ecrit SOMME )
    la formule est bonne puisque quand je modifie une cellule de la plage de cellule concernee par la formule le resultat est calcule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $formula = '=SUM(F'.($liStart+2).':F'.$liEnd.')';
    $xlsSheet->setCellValueByColumnAndRow($F,$li, $formula);

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    la formule est bonne puisque quand je modifie une cellule de la plage de cellule concernee par la formule le resultat est calcule
    Non : justement si tu avais écris "SOMME" ça n'aurait pas fonctionné à l'ouverture du fichier, mais le tableur l'aurait corrigé ensuite interpreté correctement quand tu valides la formule.
    Tu peux nous fournir un code simple permettant de reproduire ton problème ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Homme Profil pro
    agriculteur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    require_once 'class/PHPExcel.php';
     
    $xlsObj = new PHPExcel();
     
    $xlsSheet = $xlsObj->getActiveSheet();
     
    $xlsSheet->getHeaderFooter()->setOddHeader($xlsObj->getProperties()->getTitle() . '&RPage &P/&N');
    $xlsSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
    $xlsSheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);        
     
    $B = "B";
     
    $xlsSheet->setTitle("12-03-2017-st-cyr");
    $xlsSheet->setCellValue("B1", 1);
    $xlsSheet->setCellValue("B2", 1);
    $xlsSheet->setCellValue("B3", 1);
     
    $formula = '=SUM('.$B.'1:'.$B.'3)';
    $xlsSheet->setCellValueByColumnAndRow(2, 5, $formula);
     
    $objWriter = PHPExcel_IOFactory::createWriter($xlsObj, 'Excel2007');
    $objWriter->save("test.xlsx");
     
    ?>
     
    <html>
    <body>
        <a href="test.xlsx" target="_blank" >test.xlsx</a>
    </body>
    </html>

  6. #6
    Candidat au Club
    Homme Profil pro
    agriculteur
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut solution
    bonjour

    en fouillant sur le forum pour un autre probleme de formules, j'ai trouve dans le tutoriel de MaitrePylos quelquechose que j'ai essaye et ça a resolu mon probleme.

    j'utilisais une fonction statique de la classe PHPExcel_IOFactory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $objWriter = PHPExcel_IOFactory::createWriter($xlsObj, 'Excel2007');
    et en utilisant plutot l'instanciation d'un objet, comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $objWriter =  new PHPExcel_Writer_Excel2007($xlsObj);
    $objWriter->setPreCalculateFormulas(true);
    ça fonctionne !

    le 2e probleme que j'avais concernait une formule avec une reference a une autre feuille - qui en plus avait un espace dans son nom :

    j'avais essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $xlsSheet->setCellValue("D6", '='.$strSheet.'.D42');
    en ayant utilise l'objet "PHPExcel_Writer_Excel2007" du fait de l'espace dans le nom de ma feuille j'avais une exception et apparaissait
    "nom de ma feuille"!D42, j'ai essaye de remplacer le "." par "!" et en quotant le nom de la feuille : ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $xlsSheet->setCellValue("D6", '=\''.$strSheet.'\'!D42');

    merci pour votre boulot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script qui ne s'exécute pas
    Par arizki dans le forum Administration système
    Réponses: 6
    Dernier message: 19/06/2006, 13h19
  2. fonction qui ne s'execute pas mais qui ne retourne pas d'erreur
    Par duplo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/06/2006, 22h43
  3. des fichiers PERL qui ne s'executent pas
    Par steinfield dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2006, 15h52
  4. [POO] Methode de classe qui ne s'exécute pas
    Par gregal dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2006, 12h01
  5. [FLASH 8] Un trace qui ne s'execute pas ?
    Par memess dans le forum Flash
    Réponses: 13
    Dernier message: 30/11/2005, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo