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

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. pour récupérer le contenu d’une cellule en string par exemple.

Dans cet article, nous allons voir comment créer un fichier xlsx et comment écrire des données dedans.

création d’un objet phpexcel

 $objPHPExcel = new PHPExcel();

on définit les propriétés de notre document

 $objPHPExcel->getProperties()
 ->setCreator("Benjion")
 ->setLastModifiedBy("Benjion")
 ->setTitle("un fichier de test")
 ->setSubject("comment creer un fichier excel avec PHPExcel")
 ->setDescription("description du fichier")
 ->setKeywords("creation  fichier excel phpexcel tutoriel");
$sheet = $objPHPExcel->getActiveSheet();

on paramètre le password et les sécurités

 $sheet->getProtection()->setSheet(true);
 $sheet->getProtection()->setPassword('benji0n');
 $sheet->getProtection()->setSheet(true);
 $sheet->getProtection()->setSort(true);
 $sheet->getProtection()->setInsertRows(true);
 $sheet->getProtection()->setFormatCells(true);

on paramètre la largeur des column

$sheet->getColumnDimension('A')->setWidth(20);
$sheet->getColumnDimension('B')->setWidth(45);
$sheet->getColumnDimension('C')->setWidth(45);
$sheet->getColumnDimension('D')->setWidth(15);

centrer le contenu d une cellule

$sheet->getStyle('A2')->getAlignment()
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

mettre en gras le contenu d’une cellule

$styleArray = array( 'font' => array( 'bold' => true) ); 
$sheet->getStyle('A1')->applyFromArray($styleArray);

definir la hauteur de ligne

$objPHPExcel->getActiveSheet()
->getRowDimension('index ligne')->setRowHeight(100);

Merger des cellules

$objPHPExcel->getActiveSheet()->mergeCells('A1:D1');

pour ajouter une valeur dans une cellule

$sheet->setCellValue('A' . $IndexLigne, $value);

proteger une cellule d’un fichier excel avec PHPExcel

 $sheet->getStyle('A'. $Rowkey)->getProtection()->setLocked(
 PHPExcel_Style_Protection::PROTECTION_PROTECTED
 );

debloquer une cellule d’un fichier excel

$sheet->getStyle('C'. $Rowkey)->getProtection()->setLocked(
                PHPExcel_Style_Protection::PROTECTION_UNPROTECTED
                );

ouvrir le fichier excel sur la première page par defaut

$objPHPExcel->setActiveSheetIndex(0);

écrire les données dans le fichier Excel

 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

on créer le fichier

$objWriter->save('url/vers/mon/nomdufichier.extension');

auteur de ligne

$objPHPExcel->getActiveSheet()->getRowDimension('index de ligne')
->setRowHeight(100);

saut a la ligne dans une cellule

$objPHPExcel->getActiveSheet()
->setCellValue('H5', "Hello\r World"); 
$objPHPExcel->getActiveSheet()->getStyle('H5')
->getAlignment()->setWrapText(true);

forcer telechargement du fichier dans le browser

header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="PV AAPC.xlsx"');
$objWriter->save('php://output');

Commentaires sur: "Librairie PHPExcel, créer,écrire, récupérer le contenu d’une cellule dans un fichier et plein d’autres astuces …" (12)

  1. Katherine Petrova a dit:

    Salut, j’utilise phpexcel et jusqu’içi j’ai pas eu de problème sauf maintenant où je dois créer un ficher avec des lignes qui se répètent.j’ai parcouru tous les forums et toujours pas de solution.
    je ve faire un truc de ce genre:

    merçi pour votre aide

  2. stef a dit:

    Bonjour,
    J’ai un problème avec la fonction setCellValue.
    J’essaye de mettre une valeur grâce à une variable récupérée d’une requette sql.
    Cette valeur est en fait une chaine de caractère, mais quand j’ouvre le fichier excel, il n’y a que la première lettre qui a été insérée.

    $sheet->setCellValue(‘A’ . $IndexLigne, $result[‘id’]);

    Je n’arrive pas à obtenir la chaine en entier.
    J’espere que vous pourrez m’aider.
    Merci d’avance!

    • stef a dit:

      En fait le problème n’est pas celui que je pensais : il m’affiche la chaine de caractère jusqu’à arrivé à un caractère accentué, où il s’arrête alors. Le problème est que j’ai besoin qu’il écrive la chaine complètement, avec les caractères accentués inclus.
      Je vous remercie d’avance pour votre aide.

  3. […] 6 Encore une astuce pour manipuler les fichiers Excel avec PHP : Librairie PHPExcel, créer et écrire dans un fichier et plein d’autres astuces … […]

  4. ghizlane a dit:

    Bonjour a tous,
    moi jai un probleme c’est que je recupere les resultats dans un tableau pour l’ajouter dans un fichier Excel, mais ce dernier n’insere que la derniere ligne.

    $pdl=array(); ///// mon tableau
    for($k=0;$ksetCellValue(‘A’.$IndexLigne,$p[‘nom’]);
    $IndexLigne++;
    }

    NB: Les resultats du tableau s’affiche tres bien sauf l’ajout au fichier où il y a le probleme.
    besoin d’aide et merci d’avance 🙂

    • ghizlane a dit:

      $pdl = array(); //mon tableau
      for($k=0;$k<$i;$k++){

      $pdl['nom'] = $nom1;

      }

      $pdl_compteur = 0;
      foreach($pdl as $pdl_compteur){

      $p = $pdl[$pdl_compteur];
      $pdl_compteur++;
      for($j=$IndexLigne;$jSetCellValue(‘A’.$IndexLigne,$p[‘nom’]);
      $IndexLigne++;
      }}

      voila le code correct, parce qu’il y avait un prbleme quand jai copié le premier dans le commentaire

  5. Bonjour
    j’ai un problème au niveau de la 1 ere ligne $objPHPExcel = new PHPExcel();
    Je sais pas ou est le problème?

  6. Hello, merci pour l’article qui m’aide bien. Pour info je dois corriger certaines lignes de codes données ici pour qu’elles fonctionnent, exemple :
    $sheet->getColumnDimension(‘A’)->setWidth(20);
    je dois faire :
    $objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(50);

    Idem pour le gras :

    $styleArray = array( ‘font’ => array( ‘bold’ => true) );
    $objPHPExcel->getActiveSheet()->getStyle(‘A1’)->applyFromArray($styleArray);

    Merci 🙂

  7. ByLoum a dit:

    Bon

  8. ByLoum a dit:

    Bonjour, j’aimerais voir tous les champs d’un fichier xls ou csv dans un tableau html quand je fais un upload d’un fichier de ces types, est-ce que quelqu’un peut me donner un indice? Merci 😉

Laisser un commentaire