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

Introduction à PHPExcel

Image non disponible


précédentsommairesuivant

Pour la suite… créons nos outils

Pour la suite de cet article, je me baserai sur l'affichage du tableur.
Afin de ne pas réécrire l'ensemble des codes, je vais étendre la classe PHPExcel, et commencer à créer des outils personnalisés pour la génération des fichiers.

Étendre PHPExcel

Soit la nouvelle classe suivante :

 
Sélectionnez
/**
 * Classe étendue de PHPExcel.
 * Cette classe permet la génération dynamique
 * de fichier tableur suivant différent format.
 *
 * @copyright 2008 MaitrePylos Technologies (Formatux.be)
 * @author   Ernaelsten Gerard
 * @license  GPL
 * @version  Release: 0.1
 */

require 'PHPExcel.php';
class MaitrePylosExcel extends PHPExcel {


  public function __construct() {
    parent::__construct();
  }

  /**
   * Méthode englobant une fonction switch pour le choix du format de tableur.
   * @method affiche
   * @param String $format
   * @param String $nomFichier
   * @example $workbook->affiche('Excel2007','MonFichier');
   */
  public function affiche($format = 'Excel5',$nomFichier = 'Tableur'){

    switch($format){
      case 'Excel2007' :
        include 'PHPExcel/Writer/Excel2007.php';
        $writer = new PHPExcel_Writer_Excel2007($this);
        $ext = 'xlsx';
        $header = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
        //supprime le précalcul
        $writer->setPreCalculateFormulas(false);
        break;
      case 'Excel2003' :
        include 'PHPExcel/Writer/Excel2007.php';
        $writer = new PHPExcel_Writer_Excel2007($this);
        $writer->setOffice2003Compatibility(true);
        $ext = 'xlsx';
        $header = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
        //supprime le précalcul
        $writer->setPreCalculateFormulas(false);
        break;
      case 'Excel5' :
        include 'PHPExcel/Writer/Excel5.php';
        $writer = new PHPExcel_Writer_Excel5($this);
        $ext = 'xls';
        $header = 'application/vnd.ms-excel';
        break;
      case 'CSV' :
        include 'PHPExcel/Writer/CSV.php';
        $writer = new PHPExcel_Writer_CSV($this);
        $writer->setDelimiter(",");//l'opérateur de séparation est la virgule
        $writer->setSheetIndex(0);//Une seule feuille possible
        $ext = 'csv';
        $header = 'text/csv';
        break;
      case 'PDF' :
        include 'PHPExcel/Writer/PDF.php';
        $writer = new PHPExcel_Writer_PDF($this);
        $writer->setSheetIndex(0);//Une seule feuille possible
        $ext = 'pdf';
        $header = 'application/pdf';
        break;
      case 'HTML' :
        include 'PHPExcel/Writer/HTML.php';
        $writer = new PHPExcel_Writer_HTML($this);
        $writer->setSheetIndex(0);//Une seule feuille possible
        $ext = 'html';
        $header = 'text/html';
        break;

    }

    header('Content-type:'.$header);
    header('Content-Disposition:inline;filename='.$nomFichier.'.'.$ext);
    $writer->save('php://output');
  }

    /**
   * Méthode englobant une fonction switch pour le choix du format de tableur.
   * @method enregistre
   * @param String $format
   * @param String $nomFichier
   * @example $workbook->enregistre('Excel2007','MonFichier');
   */
  public function enregistre($format = 'Excel5',$nomFichier = 'Tableur'){

    switch($format){
      case 'Excel2007' :
        include 'PHPExcel/Writer/Excel2007.php';
        $writer = new PHPExcel_Writer_Excel2007($this);
        $ext = 'xlsx';
        //supprime le précalcul
        $writer->setPreCalculateFormulas(false);
        break;
      case 'Excel2003' :
        include 'PHPExcel/Writer/Excel2007.php';
        $writer = new PHPExcel_Writer_Excel2007($this);
        $writer->setOffice2003Compatibility(true);
        $ext = 'xlsx';
        //supprime le précalcul
        $writer->setPreCalculateFormulas(false);
        break;
      case 'Excel5' :
        include 'PHPExcel/Writer/Excel5.php';
        $writer = new PHPExcel_Writer_Excel5($this);
        $ext = 'xls';
        break;
      case 'CSV' :
        include 'PHPExcel/Writer/CSV.php';
        $writer = new PHPExcel_Writer_CSV($this);
        $writer->setDelimiter(",");//l'opérateur de séparation est la virgule
        $writer->setSheetIndex(0);//Une seule feuille possible
        $ext = 'csv';
        break;
      case 'PDF' :
        include 'PHPExcel/Writer/PDF.php';
        $writer = new PHPExcel_Writer_PDF($this);
        $writer->setSheetIndex(0);//Une seule feuille possible
        $ext = 'pdf';
        break;
      case 'HTML' :
        include 'PHPExcel/Writer/HTML.php';
        $writer = new PHPExcel_Writer_HTML($this);
        $writer->setSheetIndex(0);//Une seule feuille possible
        $ext = 'html';
        break;

    }

    $writer->save($nomFichier.'.'.$ext);

  }
}

Petit exemple

Nous utiliserons cette classe de cette façon :

 
Sélectionnez
include 'MaitrePylosExcel.php';

$workbook = new MaitrePylosExcel();

$sheet = $workbook->getActiveSheet();
$sheet->setCellValue('A1','MaitrePylos');

$workbook->affiche('Excel2007','MonPremierFichier');

Vous prêterez attention au fait que dans l'article j'utilise la variable $sheet, qui sera le remplacement de $workbook->getActiveSheet(), dans les exemples fournis par l'application, ils utiliseront plus l'écriture $workbook->getActiveSheet()->getFont(), or je privilégie $sheet->getFont(), gardez bien cela à l'esprit.

Les formules

Pour introduire des formules dans le fichier, il suffit de passer en argument ladite formule.

 
Sélectionnez
include 'MaitrePylosExcel.php';

$workbook = new MaitrePylosExcel();

$sheet = $workbook->getActiveSheet();
$sheet->setCellValue('A1',4);
$sheet->setCellValue('A2',5);
$sheet->setCellValue('A3','=SUM(A1:A2)');

$workbook->affiche('Excel2007','MaPremiereFormule');

Multifeuilles (sheets)

Ici nous allons voir comment faire pour avoir plusieurs feuilles dans le tableur.

Le fait d'avoir plusieurs feuilles ne vous permettra pas de générer le tableur dans les formats suivants :

  • PDF ;
  • CSV ;
  • HTML.

Ces formats ne permettant que la génération d'une seule feuille.

Lors de la création de votre document, une feuille est automatiquement créée, et nous en prenons possession avec la méthode getActiveSheet().

 
Sélectionnez
include 'MaitrePylosExcel.php';

$workbook = new MaitrePylosExcel();

$sheet = $workbook->getActiveSheet();

$workbook->affiche('Excel2007','MaPremiereFormule');

Pour donner un nom à cette feuille, on utilise la méthode setTitle()

 
Sélectionnez
 $sheet->setTitle('feuille 1');

Pour créer de nouvelles feuilles, nous utiliserons la méthode createSheet() de la classe PHPExcel, qui elle-même instancie la classe PHPExcel_WoorkSheet.

 
Sélectionnez
/*********************************************************
     *
     * Création de la deuxième feuille
     *******************************************************/
    //création de la nouvelle feuille
    $sheet2 = $workbook->createSheet();
    //nom de la feuille
    $sheet2->setTitle('feuille 2');



    /*********************************************************
    *
    * Création de la troisième feuille
    *******************************************************/
    $sheet3 = $workbook->createSheet();
    $sheet3->setTitle('feuille 3');


    /*********************************************************
    *
    * Création de la quatrième feuille
    *******************************************************/
    $sheet4 = $workbook->createSheet();
    $sheet4->setTitle('feuille 4');

précédentsommairesuivant

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.