OpenSpout est une bibliothèque open-source en PHP conçue pour lire et écrire des fichiers de type tableur, tels que les fichiers CSV, XLSX, et ODS, de manière rapide et scalable. Contrairement à d’autres bibliothèques similaires, OpenSpout se distingue par sa capacité à traiter des fichiers de très grande taille tout en maintenant une utilisation mémoire extrêmement faible, souvent inférieure à 3 Mo.
Installation
L’installation d’OpenSpout est simple et se fait via Composer, un gestionnaire de dépendances PHP. Pour installer la bibliothèque, exécutez la commande suivante dans votre terminal :
composer require openspout/openspout
Utilisation de base
Lecture de fichiers
Quel que soit le type de fichier que vous souhaitez lire (CSV, XLSX, ODS), l’interface de lecture est la même. Voici un exemple de code pour lire un fichier :
use OpenSpout\Reader\CSV\Reader;
$reader = new Reader();
$reader->open('/chemin/vers/fichier.csv');
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
$cellules = $row->getCells();
// Traitez les données ici
}
}
$reader->close();
Si le fichier contient plusieurs feuilles, le lecteur les traitera séquentiellement.
Écriture de fichiers
L’écriture de fichiers est également simple et uniforme, quel que soit le format de sortie. Voici comment créer un fichier XLSX :
use OpenSpout\Writer\XLSX\Writer;
use OpenSpout\Common\Entity\Row;
use OpenSpout\Common\Entity\Cell;
$writer = new Writer();
$writer->openToFile('/chemin/vers/fichier.xlsx');
$cellules = [
Cell::fromValue('Bonjour'),
Cell::fromValue('le'),
Cell::fromValue('monde!'),
];
$ligne = new Row($cellules);
$writer->addRow($ligne);
$writer->close();
Avantages et Fonctionnalités
OpenSpout est particulièrement utile pour manipuler des fichiers de très grande taille, là où d’autres bibliothèques échouent ou consomment trop de mémoire. De plus, il offre une interface homogène pour lire et écrire différents formats, ce qui simplifie l’intégration dans des projets PHP existants.
Exemple avancé
Voici un exemple d’écriture d’un fichier XLSX avec plusieurs feuilles :
$writer = new \OpenSpout\Writer\XLSX\Writer();
$writer->openToFile('multi_sheet.xlsx');
for ($i = 1; $i <= 3; $i++) {
$writer->addNewSheetAndMakeItCurrent();
for ($j = 1; $j <= 5; $j++) {
$writer->addRow(Row::fromValues(["Feuille $i", "Ligne $j"]));
}
}
$writer->close();
En conclusion, OpenSpout est une solution idéale pour les développeurs PHP qui ont besoin de gérer efficacement des fichiers de tableur volumineux. Son installation facile, ses performances élevées, et son interface simple en font un outil précieux pour de nombreux projets.