xlsx-reader は、 spreadsheet-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 ライセンスに基づいてライセンスされています。