La boîte à Tutoriels de Christopher PECAUD

Utilisation de la bibliothèque de fonctions PHPExcel avec PHP

Laisser un commentaire

SOMMAIRE


I Introduction
II Préparatifs
III Accéder à une base de données Microsoft SQL server avec PHP
1. Obtention des données issues de l’application web
2. Les fichiers nécessaires à inclure
3. Création d’un objet et création d’une feuille de calculs
4. Intégration des données
5. Configurer des cellules
a. Changer les dimensions
b. Attribuer un format numérique à une cellule
c. Changer la couleur d’une cellule
6. Sauvegarder au format Excel 2007
IV Conclusion

I Introduction

Dans ce tutoriel, je vais vous montrer comment réaliser un script PHP vous permettant de générer automatiquement une feuille de calculs Excel à partir de données issues d’une application Web.

Cette bibliothèque fournit toutes fonctions nécessaires pour intégrer des tableaux de données directement dans le fichier généré, nous verrons qu’il est très facile de réaliser cette opération en une seule ligne de code sans passer par une boucle…

II Préparatifs

Avant tout, il va falloir télécharger la bibliothèque de fonctions PHPExcel. La page d’accueil se trouve sur le portail communautaire Codeplex à cette adresse. Vous y trouverez e nombreuses informations sur le déroulement du projet. Il vous suffit de cliquer sur l’onglet « Download » pour accéder à la page de téléchargement. Plusieurs fichiers peuvent être téléchargés. Tout dépend si vous voulez télécharger la documentation en même temps. Tous ces fichiers sont au format compressé…

Une fois téléchargé, il faut décompresser le contenu dans un répertoire de votre choix. En fait pour pouvoir utiliser cette bibliothèque de fonctions vous aurez besoin de ce qui est contenu dans le répertoire « classes » du package. Copier ce répertoire dans le dossier contenant votre projet PHP comme vous le voulez… Vous êtes enfin prêt à développer votre script…

III Ecriture du script

1. Obtention des données issues de l’application web

Avant toute chose nous allons faire un point sur l’envoi par paramètre des données au script qui va gérer l’intégration de celles-ci dans la feuille de calcul.

Dans la page qui appelle le script il est essentiel d’envoyer les données en utilisant les fonctions htmlentities et serialize comme ceci :


$strsend = "header=".htmlentities(serialize($headerXLS), ENT_QUOTES | ENT_IGNORE)."
            &data=".htmlentities(serialize($dataXLS), ENT_QUOTES | ENT_IGNORE)."
            &headers=".htmlentities(serialize($headers), ENT_QUOTES | ENT_IGNORE);

$dataXLS, $headers étant des tableaux à deux dimensions déclarés et contenant des données…

L’envoi des données se fait par l’intermédiaire d’un lien comme ceci :


<div class='toolbar'><div class='button'><a href='#'
onclick="javascript:rafraichir('tools/exportExcel.php?<?php echo ($strsend); ?>');
return false;">Export Excel</a></div></div>

Ensuite dans le script il faut récupérer les données envoyées par la page appelante, l’opération consiste à désérialiser les données, comme ceci :


if (isset($_GET['header']))
{
    $header = unserialize($_GET['header']);
}

if (isset($_GET['data']))
{
   $data    = array();
   $data = unserialize($_GET['data']);
}

 

if (isset($_GET['headers']))
{
   $headers = array();
   $headers = unserialize($_GET['headers']);
}

Voilà maintenant que vous avez récupéré les données il vous est possible de travailler avec…

2. Les fichiers nécessaires à inclure

Vous devez maintenant inclure les includes suivants :


include('phpExcel.php');
include('phpExcel/Writer/Excel2007.php'); 

Le deuxième fichier d’inclusion fournit toutes les fonctions permettant la création du fichier OpenXML permettant de générer une feuille de calcul au format Excel 2007.

Si vous regarder bien le contenu du dossier « Writer » vous vous apercevrez que vous pouvez générer des fichiers au format PDF par exemple. Ce qui prouve que cette bibliothèque est très riche.

3. Création d’un objet et création d’une feuille de calculs

Avant toute chose, il est nécessaire de créer un objet en appelant la classe PHPExcel , comme ceci :


$objExcel = new phpExcel();

Il faut ensuite créer une feuille de calculs sur laquelle on pourra « déposer » nos données, comme ceci :


$objExcel->setActiveSheetIndex(0);

0 correspond à la première feuille de calculs créée.

Une fois que vous avez créé votre objet et activé une feuille de calculs, il vous possible d’interagir avec pour intégrer les données précédemment acquises.

4. Intégration des données

Nous allons commencer par intégrer le titre, que nous avons récupérer par la variable $header. Pour ce faire, il est important de cibler la feuille de calculs que l’on vient d’activer et ensuite déterminer sur quelle cellule de la feuille nous voulons intégrer les données, c’est ce que fait cette ligne de code :


$objExcel->getActiveSheet()->SetCellValue('A1', $header);

Nous avons intégré un titre dans notre document, maintenant il nous faut intégrer les entêtes du tableau. Ceci va être effectué à partir d’un tableau de données $headers. Cette fois-ci nous allons appeler une fonction qui prend en argument un tableau et qui fait tout le travail d’intégration à notre place sans utiliser de boucle pour itérer chaque élément. Celle-ci est fromArray elle prend en argument les paramètres suivant :

  • Le premier argument à passer est le tableau contenant les données ;
  • Le deuxième permet de fournir une valeur du tableau correspondant à une cellule vide du tableau Excel généré ;
  • Le troisième permet de fournir la première cellule où l’on va commencer à intégrer les données ;
  • Le quatrième permet de spécifier si l’on doit faire une comparaison stricte pour les valeurs nulles du tableau, c’est un booléen.

Voici la ligne permettant d’intégrer les entêtes de notre tableau :


$objExcel->getActiveSheet()->fromArray($headers, NULL, 'A3', true);
Maintenant, voici les données permettant d’intégrer les lignes de données incluses dans notre tableau $data, c’est exactement le même procédé :

$objExcel->getActiveSheet()->fromArray($data, NULL, 'A4', true);

5. Configurer des cellules

Voilà nous en avons fini avec l’intégration des données passons maintenant sur le paramétrage des cellules.

a. Changer les dimensions

Pour dimensionner les cellules par colonnes, il suffit d’utiliser la fonction getColumnDimension qui prend en paramètre le nom de la colonne. Voici la ligne de code nécessaire pour changer la largeur de la colonne :


$objExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);

Pour changer la hauteur d’une ligne entière de cellules il faut en premier lieu sélectionner la ligne que l’on veut modifier. Pour ce faire il suffit d’y accéder grâce à la fonction getDefaultRowDimension() et ensuite modifier la hauteur de la ligne entière :


$objExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);

b. Attribuer un format numérique à une cellule

Il est possible aussi d’appliquer un format spécifique à une cellule. Il va vous falloir appeler la fonction getStyle prenant en paramètre le nom de la cellule à modifier. Ensuite il faut spécifier que l’on veut changer le style de la cellule en modifiant son format de cellule, ceci est effectué par la ligne de code suivante :


$objExcel->getActiveSheet()->getStyle('B1')->getNumberFormat()->setFormatCode('#,##0.00');

c. Changer la couleur d’une cellule

Pour modifier la couleur d’une cellule il suffit de sélectionner la cellule que l’on veut modifier, de sélectionner le type de remplissage (ici FILL_SOLID) et ensuite d’appliquer un nom de couleur :


$objExcel->getActiveSheet()->getStyle('B3')->getFill()->
           setFillType(PHPExcel_Style_Fill::FILL_SOLID);

$objExcel->getActiveSheet()->getStyle('B3')->getFill()->getStartColor()->setARGB('FFFF0000');

6. Sauvegarder au format Excel 2007

Pour réaliser cette opération il suffit de faire un appel à la classe PHPExcel_Writer_Excel2007, comme ceci :


$objWriter = new PHPExcel_Writer_Excel2007($objExcel);

Ensuite pour sauvegarder le fichier il suffit d’appeler la fonction Save de cet objet :


$objWriter->save($nom_fichier);

IV Conclusion

Nous venons de voir que l’on peut très bien générer automatiquement des fichiers bureautiques à partir de données extraites d’une application Web et en particulier d’une base Mysql ou SQL Server par exemple. Cette bibliothèque est très riche et permet de réaliser des tableaux d’insérer des images et bien plus encore… En effet elle gère aussi d’autres formats comme le PDF…

blog comments powered by Disqus
RapidWeaver Icon

Made in RapidWeaver