xlsx-reader es una extensión del lector de hojas de cálculo orientado a XLSX que forma parte del lector de hojas de cálculo.
Ofrece funcionalidad para leer de manera eficiente los datos contenidos en el archivo XLSX determinado.
El objetivo de esta biblioteca es entregar datos contenidos en celdas de hojas de cálculo XLSX, no el estilo del documento. Como tal, la biblioteca no ofrece soporte para capacidades XLSX que no sean estrictamente necesarias para lograr este objetivo. Solo se admiten el formato básico de valores de celda y las funcionalidades de cadenas compartidas.
El paquete está disponible en Packagist. Puedes instalarlo usando Composer.
composer require aspera/xlsx-reader
Todos los datos se leen del archivo de forma secuencial y cada fila se devuelve como una matriz de columnas.
<?php
use Aspera Spreadsheet XLSX Reader ;
$ reader = new Reader ();
$ reader -> open ( ' example.xlsx ' );
foreach ( $ reader as $ row ) {
print_r ( $ row );
}
$ reader -> close ();
También se admiten archivos XLSX con varias hojas de trabajo. El método getSheets() devuelve una matriz con índices de hojas como claves y objetos de hoja de trabajo como valores. El método changeSheet($index) se utiliza para cambiar entre hojas para leer.
<?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 ();
Las opciones para ajustar el comportamiento y la salida del lector se pueden especificar a través de una instancia de ReaderConfiguration.
Para obtener una lista completa de las opciones admitidas y sus efectos, consulte la documentación incluida en el código 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 );
Los archivos XLSX utilizan las llamadas "cadenas compartidas" para optimizar el tamaño de los archivos en los casos en que la misma cadena se repite varias veces. Para documentos más grandes, esta lista de cadenas compartidas puede volverse bastante grande, lo que provoca cuellos de botella en el rendimiento o un alto consumo de memoria al analizar el documento.
Para solucionar esto, el lector selecciona valores predeterminados sensatos para un consumo máximo de RAM. Una vez que se ha agotado este límite de memoria, el sistema de archivos se utiliza para otras estrategias de optimización.
Para configurar este comportamiento en detalle, por ejemplo, para aumentar la cantidad de memoria disponible para el lector, se puede adjuntar una instancia de SharedStringsConfiguration a la instancia de ReaderConfiguration proporcionada al constructor del lector.
Para obtener una lista completa de las opciones admitidas y sus efectos, consulte la documentación incluida en el código 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 );
El objetivo de este lector es permitir la lectura de datos básicos (texto, números, fechas...) de documentos XLSX. Como tal, no hay planes de ampliar el soporte para incluir todas las funciones disponibles para archivos XLSX. Sólo se admite un subconjunto mínimo de capacidades XLSX.
En particular, se debe tener en cuenta lo siguiente con respecto a las funciones no compatibles:
Todo el código de esta biblioteca tiene la licencia MIT incluida en el archivo LICENSE.md.