2 Mars
2009

Lire un fichier excel avec php

Tags: php excel

Voici un tutoriel qui présente de façon simple et concise la manière la plus efficace de lire un fichier excel (*.xls) avec le langage PHP.

Premièrement, télécharger la librairie excelReader à cette adresse : http://sourceforge.net/projects/phpexcelreader

Seconde chose à faire, renommer le fichier "OLERead.ini" en "OLERead.php".

La troisième, allé modifier le path (chemin) d’inclusion du fichier OLERead.php dans reader.php

Vérifier que le fichier excel fournie avec le package s’ouvre bien avec le logiciel Microsoft Excel (On ne sait jamais). Dans le cas où celui-ci est illisible (Ce qui m’est arrivé, c’est pour cela que je vous préviens, cela vous évitera deux heures d’investigation infructueuse ^^), prenez ou créez un fichier excel qui fonctionne.

Donc pour lire ce jolie fichier en PHP rien de très compliqué. Suivez l’exemple fournie dans le package...

Et si l’on commentait un minimum cet exemple...

// Chargement de la librairie
Include('Excel/reader.php');

// Instanciation de la class permettant la lecture du fichier excel
$data = new Spreadsheet_Excel_Reader();


// Définition du type d’encodage de caractère à utiliser pour la sortie (ce qui va être affiché à l’écran)
// ici on utilise l’encodage de Windows voir http://en.wikipedia.org/wiki/CP1251
$data->setOutputEncoding('CP1251');

// Chargement du fichier excel à lire
$data->read('mon_beau_fichier_rois_des_fichiers.xls');


/*
$data->sheets[0]['numRows'] – Donne le nombre de lignes
$data->sheets[0]['numCols'] - Donne le nombre de colonnes
$data->sheets[0]['cells'][$i][$j] – retourne la donnée de la ligne $i et de la colonne $j

$data->sheets[0]['cellsInfo'][$i][$j] – retourne des informations à-propos de la cellule

*/
error_reporting(E_ALL ^ E_NOTICE);

// Parse l’intégralité du fichier excel
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
	for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
		echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
	}
	echo "\n";
}

 

Problème rencontré :

Encodage en utf-8. Pour palier à ce problème je vous conseille d’utiliser la fonction php mb_convert_encoding en lieu et place de la fonction utf8-encode. Pour dire vrai je me suis fait une petite fonction que j’appelle à chaque extraction de données de la librairie.

function cleanThis($val){
	return mb_convert_encoding($val, "UTF-8","windows-1252");
}

// Exemple d’appel
cleanThis($data->sheets[0]['cells'][$x][1])

Normalement avec tout cela vous devriez pouvoir lire aisément un fichier excel avec php.

Pour des raisons de praticité, je me suis fait mon propre package avec les recommandations que je vous ais donné au début. Le voici.

Bon dev !


Ajouter un commentaire