blog sur le développement web, jquery,css3, Magento, Symphony, php et bien d'autres choses

logo PHPExcelPHPExcel est une librairie permettant de faciliter l’usage de documents propriètaire type, microsoft Excel.

PHPExcel propose aux développeurs Web des classes pour le langage PHP destinées à l’ouverture et l’écriture de fichiers aux formats Excel, PDF, HTML,XLSX etc. Cet outil est fondé sur le standard Microsoft OpenXML. PHPExcel fournit le support des méta données (telles que l’auteur, le titre, la description…), des nombreuses feuilles de calcul, de plusieurs polices et styles d’écriture. Il contient également la personnalisation des cellules grâce aux bordures, au remplissage, au dégradés ainsi qu’à l’ajout d’images.

Voici maintenant comment, en utilisant la librairie php  PHPExcel, on peut lire et parcourir un fichier Excel de type .xlsx. et récupérer le contenu d’une cellule en string par exemple

$array_data = array();
$XLSXDocument = new PHPExcel_Reader_Excel2007();
$Excel = $XLSXDocument->load($lien_vers_mon_document_excel);

// get all the row of my file
$rowIterator = $Excel->getActiveSheet()->getRowIterator();
foreach($rowIterator as $row) {
 $cellIterator = $row->getCellIterator();
 // Loop all cells, even if it is not set
 $cellIterator->setIterateOnlyExistingCells(false);
 $rowIndex = $row->getRowIndex ();
 $array_data[$rowIndex] = array('A'=>'', 'B'=>'','C'=>'','D'=>'');
 foreach ($cellIterator as $cell) {
     if('A' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
     } else if('B' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
     } else if('C' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
     } else if('D' == $cell->getColumn()) {
$array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
     }
   // affiche le contenu de la ligne pour la colonne a et la colonne b
   echo $array_data[$rowIndex]['A'].';'.$array_data[$rowIndex]['B'];
    }
}

ce code peut être utilisé dans magento pour lire les fichiers Excel puisque Magento utilise la librairie PHPExcel

Commentaires sur: "PHPExcel : utiliser et lire un fichier excel XLS" (18)

  1. jcnicou a dit:

    Bonjour Benjion,
    J’utilise depuis peu la librairie PHPExcel mais je n’arrivais pas à trouver comment lire un fichier Excel et à afficher les différents champs. Mes recherches sur Google était infructueuses. C’est alors que j’ai découvert ton blog et désormais, grâce à toi je peux le faire…😉

    Par contre il y a une erreur et l’affichage du contenu doit se faire comme suit (après la fermeture de la parenthèse spéciale au lieu d’avant) :
    }
    // affiche le contenu de la ligne pour la colonne a et la colonne b
    echo $array_data[$rowIndex][‘A’].’;’.$array_data[$rowIndex][‘B’];

    }

    Sinon, la ligne s’affiche autant de fois qu’il y a de cellules…😉

    Merci encore
    Jean-Claude l’ancien

  2. […] utiliser et lire un fichier excel XLS avec la librairie PHPExcel […]

  3. […] si vous devez créer un fichier xls et écrire des données dans les cellules de votre fichier Excel en PHP. Vous devez utiliser la librairie PHPExcel. voir le tutoriel pour lire un fichier excel xlsx avec PHPExcel. […]

  4. Le post m’a également dépanné, merci beaucoup🙂 et bonne continuation

  5. […] 3 Vous souhaitez manipuler un fichier Excel avec PHP ? :utiliser et lire un fichier excel XLS avec la librairie PHPExcel […]

  6. comment afficher afficher les pdf à l’aide de phpexcel

  7. thetruegamer a dit:

    Il faut que tu connaisses le nombre de colonnes de ton fichier pour que cela marche non ? Si on t’envoies un fichier excel via un formulaire par exemple, ça l’affichera pas en entier si il a par exemple 35 colonnes ?

  8. ghizlane a dit:

    bonjour,
    s’il vous plait, j’ai essayé ce code, et j’ai une erreur de load, il narrive pas a trouver le fichier

    • Sans voir le code je peux pas te répondre mais je dirais que l erreur se situe au niveau de l URL que tu spécifie pour ton fichier🙂 travaille autour de ça😉

      • ghizlane a dit:

        voila un bout de code:

        <?php
        require_once("../Bibliotheque/PHPExcel/Classes/PHPExcel/Reader/Excel2007.php");
        if(isset($_POST["submit_recherche"])){
        echo 'chargement’;
        $XLSXDocument = new PHPExcel_Reader_Excel2007();
        $Excel = $XLSXDocument->load(‘Résiliations Non Coupées Stock 20150407.xlsx’);
        $sheet = $Excel->getSheetByName(‘Liste’);
        ?>

        et aussi l’erreur,
        Fatal error: Uncaught exception ‘PHPExcel_Reader_Exception’ with message ‘Could not open Résiliations Non Coupées Stock 20150407.xlsx for reading! File does not exist.’ in
        C:\Users\ghizlane\Desktop\xamp\htdocs\Gestion_Bailleur\Bibliotheque\PHPExcel\Classes\PHPExcel\Reader\Excel2007.php:347 Stack trace: #0
        C:\Users\ghizlane\Desktop\xamp\htdocs\Gestion_Bailleur\Controllers\Rechercher.php(6): PHPExcel_Reader_Excel2007->load(‘R\xC3\xA9siliations N…’) #1 {main} thrown in
        C:\Users\ghizlane\Desktop\xamp\htdocs\Gestion_Bailleur\Bibliotheque\PHPExcel\Classes\PHPExcel\Reader\Excel2007.php on line 347.

        NB: sachant que le fichier excel existe dans le même dossier que script🙂

      • Bonjour Ghizlane,
        Le nom du fichier est de type « Windows » et il est considéré comme invalide sous Unix. Change simplement son nom en supprimant les espaces, l’accentuation, les caractères spéciaux. Pour ma part, depuis les débuts d’Internet, j’ai pour règle de n’utiliser que des noms de fichiers en minuscule et avec pour seuls caractères spéciaux le – ou _
        Cordialement.

  9. ghizlane a dit:

    ah oui vous avez raison, j’arrive maintenant à acceder au fichier merci beaucoup🙂

  10. bien joué😉

  11. ghizlane a dit:

    Bonjour a tous,
    svp, cette fois je veux ecrire dans un fichier excel.
    j’ai essayé de recuperer des données d’une base Access et de les inserer dans un fichier Excel ms le probleme c’est qu’il ne recupere que le dernier element et pas tous.besoin d’aide svp et voila un bout de code, merci d’avance:

    if($pdl3 == $pdl4){
    $i++;
    $sql5 = « select * from PDL_CONVENTIONNES where PDL = ‘$pdl3’ and GESTIONNAIRE = ‘$gestionnaire_selected’ « ;
    $requete5 = odbc_do($cnnx,$sql5);
    while($query5 = odbc_fetch_array($requete5)){
    $nom2 = $query5[‘NOM’];
    $rue2 = $query5[‘RUE’];
    $etage2 = $query5[‘ETAGE_NUMERO_DE_LOGEMENT’];
    $matricule2 = $query5[‘MAT’];
    $commune2 = $query5[‘COMMUNE’];
    $pdl3 = $query5[‘PDL’];
    $reference2 = $query5[‘REF’];
    $gestionnaire2 = $query5[‘GESTIONNAIRE’];
    }//end while
    $sql6 = « select * from LISTE_GESTIONNAIRE where GESTIONNAIRE = ‘$gestionnaire2’ « ;
    $requete6 = odbc_do($cnnx,$sql6);
    while($query6 = odbc_fetch_array($requete6)){
    $tel2 = $query6[‘TELEPHONE’];
    $mail2 = $query6[‘MAIL’];
    }//end while*/
    if($i != 0){
    include(« Excel.php »);
    for($IndexLigne=2;$IndexLignesetCellValue(‘A’.$IndexLigne, $nom2);
    $feuille->setCellValue(‘B’.$IndexLigne, $rue2);
    $feuille->setCellValue(‘C’.$IndexLigne, $etage2);
    $feuille->setCellValue(‘D’.$IndexLigne, $matricule2);
    $feuille->setCellValue(‘E’.$IndexLigne, $commune2);
    $feuille->setCellValue(‘F’.$IndexLigne, $pdl3);
    $feuille->setCellValue(‘G’.$IndexLigne, $gestionnaire2);
    $feuille->setCellValue(‘H’.$IndexLigne, $date_resiliation2);
    $feuille->setCellValue(‘I’.$IndexLigne, 11);
    $feuille->setCellValue(‘J’.$IndexLigne, $situation_compteur2);
    $feuille->setCellValue(‘K’.$IndexLigne, $tel2);
    $feuille->setCellValue(‘L’.$IndexLigne, $mail2);
    }
    $classeur->setActiveSheetIndex(0);
    // envoi du fichier au navigateur
    header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’);
    header(‘Content-Disposition: attachment;filename= »PDL.xlsx »‘);
    header(‘Cache-Control: max-age=0’);
    $writer = PHPExcel_IOFactory::createWriter($classeur, ‘Excel2007’);
    $writer->save(‘../Resultat/PDL.xlsx’);
    $writer->save(‘php://output’);
    }//end if

  12. Zdamin a dit:

    Bonjour je suis nouveau dans le développement web j’utilise le framework symfony la version 2.8 je veux lire un fichier excel j’ai installer liuggio/ExcelBundle avec la librairie PHPexcel. j’ai vu le code que vous avez partagé mais je ne sais pas comment l’utiliser exactement si vous pouvez m’aider Merci

  13. Jordan a dit:

    Bonjour à tous je débute dans PHPExcel et je voudrais pouvoir lire un fichier et pouvoir envoyer des requêtes qui puisse rechercher des informations dans mon fichier excel
    j’ai essayer tout d’abord avec le programme de Benjion d’ailleurs je te remercie d’avoir poster cet article qui ma bien aider mais je rencontre un problème le programme m’affiche une erreur lorsque je fais appel a mon Excel2007 :
    ATTENTION AU YEUX
    Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 327

    Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 330

    Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 365

    Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 365

    Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 327

    Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 330

    Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 402

    Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 402

    Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 327

    Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 330

    Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 1715

    Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 1715

    Warning: ZipArchive::close(): Invalid or uninitialized Zip object in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel/Reader/Excel2007.php on line 1749

    Notice: Undefined offset: -1 in /Applications/MAMP/htdocs/PHPExcel_1.8.0_doc/Classes/PHPExcel.php on line 467

    Fatal error: Uncaught Error: Call to a member function getRowIterator() on null in /Applications/MAMP/htdocs/testExcel.php:10 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/testExcel.php on line 10

    MON PROGRAMME est comme ceci :
    load(« FichierOrange1.xls »);

    // Otenir tout lesl igne de mon fichier

    $rowIteraor = $Excel->getActiveSheet()->getRowIterator();
    foreach($rowIterator as $row) {
    $celleIterator = $row->getCellIterator();
    // Boucle toutes les cellules n même si ele n’a pas été réglé
    $cellIterator->setIterateOnlyExistingCells(false);
    $rowIndex = $row->getRowIndex();
    $array_data[$rowIndex] = array(‘A’=> », ‘B’=> »,’C’=> »,’D’=> »);
    foreach ($cellIterator as $cell) {
    if(‘A’ == $cell->getColumn()) {
    $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
    } else if(‘B’ == $cell->getColumn()) {
    $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
    } else if(‘C’ == $cell->getColumn()) {
    $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
    } else if(‘D’ == $cell->getColumn()) {
    $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
    }
    // affiche le contenu de la ligne pour la colonne a et la colonne b
    echo $array_data[$rowIndex][‘A’].’;’.$array_data[$rowIndex][‘B’];
    }
    }
    ?>

    Vous pouvez m’aider s’il vous plait?
    Cordialement

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s