xlsx-reader — это расширение программы чтения электронных таблиц, ориентированной на XLSX, которая является частью программы чтения электронных таблиц.
Он обеспечивает функциональность для эффективного чтения данных, содержащихся в данном файле XLSX.
Основное внимание в этой библиотеке уделяется доставке данных, содержащихся в ячейках электронной таблицы XLSX, а не стилизации документа. Таким образом, библиотека не поддерживает возможности XLSX, которые не являются строго необходимыми для достижения этой цели. Поддерживаются только базовое форматирование значений ячеек и функции общих строк.
Пакет доступен на Packagist. Вы можете установить его с помощью Composer.
composer require aspera/xlsx-reader
Все данные считываются из файла последовательно, при этом каждая строка возвращается в виде массива столбцов.
<?php
use Aspera Spreadsheet XLSX Reader ;
$ reader = new Reader ();
$ reader -> open ( ' example.xlsx ' );
foreach ( $ reader as $ row ) {
print_r ( $ row );
}
$ reader -> close ();
Также поддерживаются файлы XLSX с несколькими листами. Метод getSheets() возвращает массив с индексами листов в качестве ключей и объектами Worksheet в качестве значений. Метод ChangeSheet($index) используется для переключения между листами для чтения.
<?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 ();
Параметры для настройки поведения и вывода средства чтения можно указать с помощью экземпляра ReaderConfiguration.
Полный список поддерживаемых параметров и их эффектов см. в документации 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 );
В файлах XLSX используются так называемые «общие строки» для оптимизации размеров файлов в случаях, когда одна и та же строка повторяется несколько раз. Для более крупных документов этот список общих строк может стать довольно большим, что приведет либо к снижению производительности, либо к высокому потреблению памяти при анализе документа.
Чтобы справиться с этим, читатель выбирает разумные значения по умолчанию для максимального потребления оперативной памяти. Как только этот лимит памяти исчерпан, файловая система используется для дальнейших стратегий оптимизации.
Чтобы детально настроить это поведение, например, чтобы увеличить объем памяти, доступной считывателю, экземпляр SharedStringsConfiguration можно присоединить к экземпляру ReaderConfiguration, предоставленному конструктору считывателя.
Полный список поддерживаемых параметров и их эффектов см. в документации по коду 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 );
Цель этого средства чтения — разрешить чтение основных данных (текст, числа, даты...) из документов XLSX. Таким образом, не планируется расширять поддержку, включив в нее все функции, доступные для файлов XLSX. Поддерживается только минимальный набор возможностей XLSX.
В частности, в отношении неподдерживаемых функций следует отметить следующее:
Весь код в этой библиотеке лицензируется по лицензии MIT, включенной в файл LICENSE.md.