xlsx-reader é uma extensão do leitor de planilhas direcionado ao XLSX que faz parte do leitor de planilhas.
Ele oferece funcionalidade para ler com eficiência os dados contidos em um determinado arquivo XLSX.
O foco desta biblioteca é fornecer dados contidos em células da planilha XLSX, não no estilo do documento. Como tal, a biblioteca não oferece suporte para capacidades XLSX que não sejam estritamente necessárias para atingir este objetivo. Somente a formatação básica do valor da célula e as funcionalidades de string compartilhada são suportadas.
O pacote está disponível no Packagist. Você pode instalá-lo usando o Composer.
composer require aspera/xlsx-reader
Todos os dados são lidos do arquivo sequencialmente, com cada linha sendo retornada como uma matriz de colunas.
<?php
use Aspera Spreadsheet XLSX Reader ;
$ reader = new Reader ();
$ reader -> open ( ' example.xlsx ' );
foreach ( $ reader as $ row ) {
print_r ( $ row );
}
$ reader -> close ();
Arquivos XLSX com múltiplas planilhas também são suportados. O método getSheets() retorna um array com índices de planilhas como chaves e objetos de planilha como valores. O método changeSheet($index) é usado para alternar entre as planilhas para leitura.
<?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 ();
Opções para ajustar o comportamento e a saída do leitor podem ser especificadas por meio de uma instância ReaderConfiguration.
Para obter uma lista completa das opções suportadas e seus efeitos, consulte a documentação no código do 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 );
Os arquivos XLSX usam as chamadas "strings compartilhadas" para otimizar o tamanho dos arquivos nos casos em que a mesma string é repetida várias vezes. Para documentos maiores, esta lista de cadeias de caracteres compartilhadas pode se tornar muito grande, causando gargalos de desempenho ou alto consumo de memória ao analisar o documento.
Para lidar com isso, o leitor seleciona padrões sensatos para consumo máximo de RAM. Uma vez esgotado esse limite de memória, o sistema de arquivos é usado para futuras estratégias de otimização.
Para configurar esse comportamento em detalhes, por exemplo, para aumentar a quantidade de memória disponível para o leitor, uma instância SharedStringsConfiguration pode ser anexada à instância ReaderConfiguration fornecida ao construtor do leitor.
Para obter uma lista completa das opções suportadas e seus efeitos, consulte a documentação no 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 );
O objetivo deste leitor é permitir a leitura de dados básicos (texto, números, datas...) de documentos XLSX. Como tal, não há planos para estender o suporte para incluir todos os recursos disponíveis para arquivos XLSX. Apenas um subconjunto mínimo de recursos XLSX é suportado.
Em particular, o seguinte deve ser observado em relação aos recursos não suportados:
Todo o código nesta biblioteca está licenciado sob a licença MIT conforme incluído no arquivo LICENSE.md.