xlsx-reader est une extension du lecteur de feuille de calcul ciblé XLSX qui fait partie du tableur-reader.
Il offre des fonctionnalités permettant de lire efficacement les données contenues dans le fichier XLSX donné.
L'objectif de cette bibliothèque est de fournir les données contenues dans les cellules de la feuille de calcul XLSX, et non le style du document. En tant que telle, la bibliothèque n'offre aucun support pour les fonctionnalités XLSX qui ne sont pas strictement nécessaires pour atteindre cet objectif. Seuls le formatage de base des valeurs de cellule et les fonctionnalités de chaîne partagée sont pris en charge.
Le package est disponible sur Packagist. Vous pouvez l'installer à l'aide de Composer.
composer require aspera/xlsx-reader
Toutes les données sont lues à partir du fichier de manière séquentielle, chaque ligne étant renvoyée sous forme de tableau de colonnes.
<?php
use Aspera Spreadsheet XLSX Reader ;
$ reader = new Reader ();
$ reader -> open ( ' example.xlsx ' );
foreach ( $ reader as $ row ) {
print_r ( $ row );
}
$ reader -> close ();
Les fichiers XLSX avec plusieurs feuilles de calcul sont également pris en charge. La méthode getSheets() renvoie un tableau avec des index de feuille comme clés et des objets Worksheet comme valeurs. La méthode changeSheet($index) est utilisée pour basculer entre les feuilles à lire.
<?php
use Aspera Spreadsheet XLSX Reader ;
$ reader = new Reader ();
$ reader -> open ( ' example.xlsx ' );
$ sheets = $ reader -> getSheets ();
foreach ( $ sheets as $ index => $ sheet_data ) {
$ reader -> changeSheet ( $ index );
echo ' Sheet # ' . $ index . ' : ' . $ sheet_data -> getName ();
// Note: Any call to changeSheet() resets the current read position to the beginning of the selected sheet.
foreach ( $ reader as $ row_number => $ row ) {
echo ' Row # ' . $ row_number . ' : ' . print_r ( $ row , true );
}
}
$ reader -> close ();
Les options permettant d'ajuster le comportement et la sortie du lecteur peuvent être spécifiées via une instance ReaderConfiguration.
Pour une liste complète des options prises en charge et de leurs effets, consultez la documentation intégrée au code de ReaderConfiguration.
<?php
use Aspera Spreadsheet XLSX Reader ;
use Aspera Spreadsheet XLSX ReaderConfiguration ;
use Aspera Spreadsheet XLSX ReaderSkipConfiguration ;
$ reader_configuration = ( new ReaderConfiguration ())
-> setTempDir ( ' C:/Temp/ ' )
-> setSkipEmptyCells ( ReaderSkipConfiguration :: SKIP_EMPTY )
-> setReturnDateTimeObjects ( true )
-> setCustomFormats ( array ( 20 => ' hh:mm ' ));
// For a full list of supported options and their effects, consult the in-code documentation of ReaderConfiguration.
$ spreadsheet = new Reader ( $ reader_configuration );
Les fichiers XLSX utilisent ce que l'on appelle des « chaînes partagées » pour optimiser la taille des fichiers dans les cas où la même chaîne est répétée plusieurs fois. Pour les documents plus volumineux, cette liste de chaînes partagées peut devenir assez longue, provoquant soit des goulots d'étranglement en termes de performances, soit une consommation de mémoire élevée lors de l'analyse du document.
Pour résoudre ce problème, le lecteur sélectionne des valeurs par défaut raisonnables pour une consommation maximale de RAM. Une fois cette limite de mémoire épuisée, le système de fichiers est utilisé pour d'autres stratégies d'optimisation.
Pour configurer ce comportement en détail, par exemple pour augmenter la quantité de mémoire disponible pour le lecteur, une instance SharedStringsConfiguration peut être attachée à l'instance ReaderConfiguration fournie au constructeur du lecteur.
Pour une liste complète des options prises en charge et de leurs effets, consultez la documentation intégrée au code de SharedStringsConfiguration.
<?php
use Aspera Spreadsheet XLSX Reader ;
use Aspera Spreadsheet XLSX ReaderConfiguration ;
use Aspera Spreadsheet XLSX SharedStringsConfiguration ;
$ shared_strings_configuration = ( new SharedStringsConfiguration ())
-> setCacheSizeKilobyte ( 16 * 1024 )
-> setUseOptimizedFiles ( false );
// For a full list of supported options and their effects, consult the in-code documentation of SharedStringsConfiguration.
$ reader_configuration = ( new ReaderConfiguration ())
-> setSharedStringsConfiguration ( $ shared_strings_configuration );
$ spreadsheet = new Reader ( $ reader_configuration );
Le but de ce lecteur est de permettre la lecture de données de base (textes, chiffres, dates...) à partir de documents XLSX. En tant que tel, il n'est pas prévu d'étendre la prise en charge pour inclure toutes les fonctionnalités disponibles pour les fichiers XLSX. Seul un sous-ensemble minimal des fonctionnalités XLSX est pris en charge.
En particulier, les points suivants doivent être notés en ce qui concerne les fonctionnalités non prises en charge :
Tout le code de cette bibliothèque est sous licence MIT telle qu'incluse dans le fichier LICENSE.md.