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 文件使用所谓的“共享字符串”来优化文件大小,以应对同一字符串重复多次的情况。对于较大的文档,此共享字符串列表可能会变得非常大,从而在解析文档时导致性能瓶颈或高内存消耗。
为了解决这个问题,读者选择合理的默认值以获得最大 RAM 消耗。一旦耗尽此内存限制,文件系统将用于进一步的优化策略。
要详细配置此行为,例如,为了增加读取器可用的内存量,可以将 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 功能的最小子集。
对于不支持的功能,应特别注意以下几点:
该库中的所有代码均根据 LICENSE.md 文件中包含的 MIT 许可证获得许可。