22 Mars
2007

Création d'un fichier Excel grâce à PHP

Créer des fichier au format CSV est à la porté de tout le monde ( avec un minimum de recherche sur internet ).
Par contre créer un vrais fichier Excel la c'est un peu plus difficile.
Mais Johann Hanne à trouvé la solution! Il a créer un ensemble de class nomées « writeexcel ». Comme son nom l'indique il est fait pour créer et écrire des fichiers de type Excel et cela dynamiquement avec PHP. C'est pas beau ça ;p ?

Ca fonctionne plutôt bien, son seul défaut à l'heure actuelle, c'est qu'il ne supporte pas l'UTF-8.
Donc si votre site est en UTF-8 n'oubliez pas la fonction utf8_decode.

Pour télécharger writeexcel c'est ici.
Ou par la (au cas où le site de l'auteur tombe)

Alors comment ça marche?


Il faut juste les fichiers suivant :
- class.writeexcel_workbook.inc.php
- class.writeexcel_worksheet.inc.php

ceux-ci font partie de la librairie writeexcel.

require_once "writeexcel/class.writeexcel_workbook.inc.php";
require_once "writeexcel/class.writeexcel_worksheet.inc.php";

//On indique ensuite un emplacement sur le serveur, là où; sera stocké le fichier
$fname = "../../files/tmp/extraction.xls";


/*******************
* on instancie la class principal de writeexcel .
la class « writeexcel_workbook » permet de créer le fichier excel en lui même.
La fonction addworksheet de la class « writeexcel_workbook » permet de créer une feuille au sein du fichier Excel ( Vous savez les petit onglet en bas à droite )
*******************/
$workbook =& new writeexcel_workbook($fname); // on lui passe en paramètre le chemin de notre fichier
$worksheet =& $workbook->addworksheet('Extraction'); //le paramètre ici est le nom de la feuille


/*****************************
* Ici on va définir un format pour les colonnes de A à D
******************************/
$worksheet->set_column('A:D', 30); // // le 30 représente la largeur de chaque colonne
$heading =& $workbook->addformat(array(
'bold' => 1, // on met le texte en gras
'color' => 'black', // de couleur noire
'size' => 12, // de taille 12
'merge' => 1, // avec une marge
'fg_color' => 0x33 // coloration du fond des cellules
));


$headings = array('Nom', 'Prénom', 'société', 'Email', 'Pays'); //définition du texte pour chaque célulles
$worksheet->write_row('A1', $headings, $heading); On intègre notre texte et les le format de cellule.
// le premier paramètre correspond à la cellule où l'on souhaite commencer à intégrer les différent paramètre.

for($x = 2; $x <= 10; $x++){
$worksheet->write("A".$x,'un text'); // ici on va écrire une célule bien définie
$worksheet->write("B".$x,'un text');
$worksheet->write("C".$x,'un text');
$worksheet->write("D".$x,'un text');
$worksheet->write("E".$x,'un text');
}


$workbook->close(); // on ferme le fichier Excel créer


Voici une version pour créer plusieurs onglets dans un fichier Excel.
La différence avec le script au-dessus, c'est que lon va créer plusieurs "workbook " gràce à la fonction $workbook->addworksheet('Nom de l'onglet')

require_once "writeexcel/class.writeexcel_workbook.inc.php";
require_once "writeexcel/class.writeexcel_worksheet.inc.php";

//On indique ensuite un emplacement sur le serveur, là où; sera stocké le fichier
$fname = "./extraction.xls";


/*******************
* on instancie la class principal de writeexcel .
la class « writeexcel_workbook » permet de créer le fichier excel en lui même.
*******************/
$workbook =& new writeexcel_workbook($fname); // on lui passe en paramètre le chemin de notre fichier

for($y=0; $y<=2; $y++){
/*
La fonction addworksheet de la class « writeexcel_workbook » permet de créer une feuille au sein du fichier Excel ( Vous savez les petit onglet en bas à droite )
Pour créer plusieurs onglet il faut ré-appeller la fonction addworksheet.
Cela permettra d'ajouter une autre feuille au fichier excel
*/

$worksheet =& $workbook->addworksheet('Extraction'.$y); //le paramètre ici est le nom de la feuille


/*****************************
* Ici on va définir un format pour les colonnes de A à D
******************************/
$worksheet->set_column('A:D', 30); // // le 30 représente la largeur de chaque colonne
$heading =& $workbook->addformat(array(
'bold' => 1, // on met le texte en gras
'color' => 'black', // de couleur noire
'size' => 12, // de taille 12
'merge' => 1, // avec une marge
'fg_color' => 0x33 // coloration du fond des cellules
));


$headings = array('Nom', 'Prénom', 'société', 'Email', 'Pays'); //définition du texte pour chaque célulles
$worksheet->write_row('A1', $headings, $heading); //On intègre notre texte et les le format de cellule.
// le premier paramètre correspond à la cellule où l'on souhaite commencer à intégrer les différent paramètre.

for($x = 2; $x <= 10; $x++){
$worksheet->write("A".$x,'un text'.$y); // ici on va écrire une célule bien définie
$worksheet->write("B".$x,'un text'.$y);
$worksheet->write("C".$x,'un text'.$y);
$worksheet->write("D".$x,'un text'.$y);
$worksheet->write("E".$x,'un text'.$y);
}
}

$workbook->close(); // on ferme le fichier Excel créer



Ca y est c'est fait.
Bien sur je vous est présenté ça de manière succincte.
Grâce à la librairie writeexcel il est possible de faire bien des choses, comme intégrer des formule mathématiques, et bien d'autre.
Alors maintenant vous n'avez plus d'excuse quand on vous demandera un générateur de fichier Excel en PHP ^^.


Ajouter un commentaire