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() ส่งคืนอาร์เรย์ที่มีดัชนีชีตเป็นคีย์ และออบเจ็กต์เวิร์กชีตเป็นค่า เมธอด 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 เพียงเล็กน้อยเท่านั้น
โดยเฉพาะอย่างยิ่ง ควรสังเกตสิ่งต่อไปนี้เกี่ยวกับคุณสมบัติที่ไม่รองรับ:
รหัสทั้งหมดในไลบรารีนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT ตามที่รวมอยู่ในไฟล์ LICENSE.md