Introduction à PHPExcel
Date de publication : 05/02/2009 , Date de mise à jour : 14/07/2010
Pour la suite...créons nos outils
3.1. Etendre PHPExcel
3.2. Petit exemple
3.3. Les formules
3.4. Multi feuilles (sheets)
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.
3.1. Etendre PHPExcel
Soit la nouvelle classe suivante :
@copyright 2008
@author
@license
@version 0 1
require ' PHPExcel.php ' ;
class MaitrePylosExcel extends PHPExcel {
public function __construct () {
parent : : __construct ();
}
@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 ' ;
$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 ' ;
$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 (" , " );
$writer ->setSheetIndex (0 );
$ ext = ' csv ' ;
$ header = ' text/csv ' ;
break ;
case ' PDF ' :
include ' PHPExcel/Writer/PDF.php ' ;
$writer = new PHPExcel_Writer_PDF($ this );
$writer ->setSheetIndex (0 );
$ ext = ' pdf ' ;
$ header = ' application/pdf ' ;
break ;
case ' HTML ' :
include ' PHPExcel/Writer/HTML.php ' ;
$writer = new PHPExcel_Writer_HTML($ this );
$writer ->setSheetIndex (0 );
$ ext = ' html ' ;
$ header = ' text/html ' ;
break ;
}
header(' Content-type: ' . $ header );
header(' Content-Disposition:inline;filename= ' . $ nomFichier . ' . ' . $ ext );
$writer ->save (' php://output ' );
}
@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 ' ;
$writer ->setPreCalculateFormulas (false );
break ;
case ' Excel2003 ' :
include ' PHPExcel/Writer/Excel2007.php ' ;
$writer = new PHPExcel_Writer_Excel2007($ this );
$writer ->setOffice2003Compatibility (true );
$ ext = ' xlsx ' ;
$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 (" , " );
$writer ->setSheetIndex (0 );
$ ext = ' csv ' ;
break ;
case ' PDF ' :
include ' PHPExcel/Writer/PDF.php ' ;
$writer = new PHPExcel_Writer_PDF($ this );
$writer ->setSheetIndex (0 );
$ ext = ' pdf ' ;
break ;
case ' HTML ' :
include ' PHPExcel/Writer/HTML.php ' ;
$writer = new PHPExcel_Writer_HTML($ this );
$writer ->setSheetIndex (0 );
$ ext = ' html ' ;
break ;
}
$writer ->save ($ nomFichier . ' . ' . $ ext );
}
}
|
3.2. Petit exemple
Nous utiliserons cette classe de cette façon :
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.
|
3.3. Les formules
Pour introduire des formules dans le fichier , il suffit de passer en argument la dite formule.
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 ' );
|
3.4. Multi feuilles (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 :
|
Ces format 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().
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()
$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.
$ sheet2 = $workbook ->createSheet ();
$sheet2 ->setTitle (' feuille 2 ' );
$ sheet3 = $workbook ->createSheet ();
$sheet3 ->setTitle (' feuille 3 ' );
$ sheet4 = $workbook ->createSheet ();
$sheet4 ->setTitle (' feuille 4 ' );
|
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.