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] Je n'arrive pas à le faire fonctioner !


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [PHPExcel] Je n'arrive pas à le faire fonctioner !
    J'utilise office 2010
    voici mon code

    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
     
    <?php
    require_once("mysql.php");
     
    include '../Classes/PHPExcel.php';
    include '../Classes/PHPExcel/Writer/Excel5.php';
     
     
     
    $workbook = new PHPExcel;
     
    $sheet = $workbook->getActiveSheet();
     
     
     
     
          $sheet->setCellValueByColumnAndRow(1,1,"ayad");
          $sheet->setCellValueByColumnAndRow(2,2,"Marouane");
     
     
     
    $writer = new PHPExcel_Writer_Excel5($workbook);
     
     
    header('Content-type: application/vnd.ms-excel');
    header('Content-Disposition:inline;filename=test.xls');
    $writer->save('php://output');
    ?>
    le fichier de sortie est remplie de caractères bizarres,
    sachant que le même code sans headers (en utilisant ce qui suit) marche très bien et enregistre un fichier excel .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <<
    $records = './fichier.xlsx';
    $writer->save($records);
    >>

  2. #2
    Membre régulier
    Homme Profil pro
    Apprenti Informatique
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Points : 91
    Points
    91
    Par défaut
    Salut,

    En lisant ton code la première chose qui me choque c'est l'utilisation d'excel5 et de .xls pour l'écriture de fichiers basés sur XML (.xlsx)

    Ensuite pour faire la même chose que toi moi voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    include ('PHPExcel.php');
    $path = './';
    set_include_path(get_include_path().PATH_SEPATATOR.$path);
    $reader = new PHPExcel_Reader_Excel5();
    $objPHPExcel = $reader->load($fichier); // chemin passé en paramètre ailleurs
    header('Cache-Control:no-store,no-cache,must-revalidate,post-check=0,pre-check=0',false);
    header('Pragma:no-cache');
    header('Content-Type:application/vnd.ms-excel');
    header('Content-Disposition:attachement;filename=testExcel.xls');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
    ob_get_clean();
    $objWriter->save('php://output');

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Points : 342
    Points
    342
    Par défaut
    Essaye avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
      header('Content-Disposition: attachment;filename="testBenchmark.xlsx"');
      header('Cache-Control: max-age=0');
     
      $writer = PHPExcel_IOFactory::createWriter($workbook, 'Excel2007');
      $writer->save('php://output');

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci les gars .

    j'ai cherché un peu, et j'ai fait plusieurs test le problème est résolu grâce à l'instruction ob_clean(); le fichier en output est lisible maintenant .


  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    voici une portion du code que j'utilise :

    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
    33
    34
    35
     
    <?php
    require_once("mysql.php");
     
    require_once '../Classes/PHPExcel.php';
    require_once '../Classes/PHPExcel/Writer/Excel5.php';
    ob_clean();
     
    $workbook = new PHPExcel();							 							 
    $sheet = $workbook->getActiveSheet();
    $sheet->setTitle("rapport");
     
    $sheet->setCellValue('g3',$_POST['titre']);
    $sheet->setCellValue('h4',$_POST['desc']);
     
    $tab = unserialize(rawurldecode($_POST['serial']));
     
    for($i = 0; $i < sizeof($tab) ; $i++) //les noms de mes colonnes 
    {
    $sheet->setCellValueByColumnAndRow($i+1,8,$tab[$i] );
     
    }
     
    //........ les éléments du tableau 
     
     
     
    $writer = new PHPExcel_Writer_Excel5($workbook); 
    header('Content-type: application/vnd.ms-excel');
    header('Content-Disposition:inline;filename=Fichier.xls ');
    $writer->save('php://output');
     
     
     
    ?>

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Une autre question.

    comment on peut modifier les attributs (couleur , font ..)d'une cellule en passant par ses coordonnées ($ligne,$colonne)

    je trouve que ce genre d'exemples sur internet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $styleA1 = $sheet->getStyle('A1');
    $styleFont = $styleA1->getFont()
    ->applyFromArray(array(
    'bold'=>true,
    'size'=>12,
    'name'=>Arial,
    'color'=>array(
    'rgb'=>'FF00FF00')));

    je veux à la place du A1 , des coordonnées

    ?????

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Points : 342
    Points
    342
    Par défaut
    Je ne comprend pas ta question, 'A1' ce sont des coordonnées : colonne A, ligne 1.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    oui oui tout a fait d'accord mais je voulais à la place du A un entier c'est plus facile dans une boucle ,
    moi je cherchais une fonction qui ressemble à celle ci :
    $sheet->setCellValueByColumnAndRow(1,9,"valeur");
    mais pour les styles


    je viens de trouver une solution avec les codes ASCII.

    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
    33
    34
    35
    36
    37
    38
     
    for($i; $i< $tailletab;$i++)
    {
     
    $col = ch(66 + $i);
     
    $styleA1 = $sheet->getStyle($col.'4')->applyFromArray(
             array(
                 'font'    => array(
                     'name'      => 'Arial',
                     'bold'      => true,
                     'italic'    => false,              
                     'strike'    => false,
                     'color'     => array(
                         'rgb' => '808080'
                     )
                 ),
                 'borders' => array(
                     'bottom'     => array(
                         'style' => PHPExcel_Style_Border::BORDER_THICK,
                         'color' => array(
                             'rgb' => '808080'
                         )
     
                     ),
                     'top'     => array(
                         'style' => PHPExcel_Style_Border::BORDER_THICK,
                         'color' => array(
                             'rgb' => '808080'
                         )
                     )
                 )
             )
     );
     
     
     
    }

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par litox Voir le message
    je voulais à la place du A un entier c'est plus facile dans une boucle
    Alors il fallait le dire sinon comment veux-tu qu'on t'aide. Je ne pensais pas qu'on puisse être bloqué par si peu car un banal tableau indexé contenant les lettres des colonnes suffit.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Grand Merci pour vos commentaires cher "philodido"

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

Discussions similaires

  1. Je n'arrive pas a faire appel a ma fonction
    Par Beniboy2012 dans le forum C++
    Réponses: 7
    Dernier message: 12/06/2017, 15h57
  2. [C#] SQL - je n'arrives pas a faire ma requete
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/07/2006, 14h43
  3. Je n'arrive pas à faire des boucles dans un répertoire
    Par padodanle51 dans le forum Linux
    Réponses: 4
    Dernier message: 04/05/2006, 18h04
  4. Réponses: 6
    Dernier message: 18/04/2006, 13h11
  5. [réplication]N'arrive pas à le faire marcher!!!!
    Par mohamed dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/03/2006, 14h29

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