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 라이선스에 따라 라이선스가 부여됩니다.