xlsx-reader ist eine Erweiterung des auf XLSX ausgerichteten Spreadsheet-Readers, der Teil des Spreadsheet-Readers ist.
Es bietet Funktionen zum effizienten Einlesen der in der jeweiligen XLSX-Datei enthaltenen Daten.
Der Schwerpunkt dieser Bibliothek liegt auf der Bereitstellung von Daten, die in XLSX-Tabellenzellen enthalten sind, und nicht auf dem Stil des Dokuments. Daher bietet die Bibliothek keine Unterstützung für XLSX-Funktionen, die zum Erreichen dieses Ziels nicht unbedingt erforderlich sind. Es werden nur grundlegende Zellwertformatierungen und gemeinsame Zeichenfolgenfunktionen unterstützt.
Das Paket ist auf Packagist verfügbar. Sie können es mit Composer installieren.
composer require aspera/xlsx-reader
Alle Daten werden nacheinander aus der Datei gelesen, wobei jede Zeile als Array von Spalten zurückgegeben wird.
<?php
use Aspera Spreadsheet XLSX Reader ;
$ reader = new Reader ();
$ reader -> open ( ' example.xlsx ' );
foreach ( $ reader as $ row ) {
print_r ( $ row );
}
$ reader -> close ();
XLSX-Dateien mit mehreren Arbeitsblättern werden ebenfalls unterstützt. Die Methode getSheets() gibt ein Array mit Blattindizes als Schlüssel und Arbeitsblattobjekten als Werten zurück. Die Methode changeSheet($index) wird verwendet, um zwischen den zu lesenden Blättern zu wechseln.
<?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 ();
Optionen zum Optimieren des Verhaltens und der Ausgabe des Readers können über eine ReaderConfiguration-Instanz angegeben werden.
Eine vollständige Liste der unterstützten Optionen und ihrer Auswirkungen finden Sie in der In-Code-Dokumentation von 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-Dateien verwenden sogenannte „gemeinsam genutzte Zeichenfolgen“, um die Dateigröße für Fälle zu optimieren, in denen dieselbe Zeichenfolge mehrmals wiederholt wird. Bei größeren Dokumenten kann diese Liste gemeinsam genutzter Zeichenfolgen sehr umfangreich werden, was entweder zu Leistungsengpässen oder einem hohen Speicherverbrauch beim Parsen des Dokuments führt.
Um dies zu bewältigen, wählt der Leser sinnvolle Standardeinstellungen für maximalen RAM-Verbrauch. Sobald dieses Speicherlimit ausgeschöpft ist, wird das Dateisystem für weitere Optimierungsstrategien genutzt.
Um dieses Verhalten im Detail zu konfigurieren, z. B. um den für den Leser verfügbaren Speicher zu erhöhen, kann eine SharedStringsConfiguration-Instanz an die ReaderConfiguration-Instanz angehängt werden, die dem Konstruktor des Lesers bereitgestellt wird.
Eine vollständige Liste der unterstützten Optionen und ihrer Auswirkungen finden Sie in der In-Code-Dokumentation von 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 );
Der Zweck dieses Readers besteht darin, das Lesen grundlegender Daten (Text, Zahlen, Daten ...) aus XLSX-Dokumenten zu ermöglichen. Daher gibt es keine Pläne, die Unterstützung auf alle für XLSX-Dateien verfügbaren Funktionen auszuweiten. Es wird nur eine minimale Teilmenge der XLSX-Funktionen unterstützt.
Im Hinblick auf nicht unterstützte Funktionen ist insbesondere Folgendes zu beachten:
Der gesamte Code in dieser Bibliothek ist unter der MIT-Lizenz lizenziert, wie in der Datei LICENSE.md enthalten.