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 許可證獲得許可。