So lesen und schreiben Sie Tabellenkalkulationsdateien in PHP
Bei der Arbeit an Webanwendungen stoßen wir oft auf eine Situation, in der wir mit Tabellenkalkulationsdateien spielen müssen. Möglicherweise möchten wir Daten aus Tabellenkalkulationen lesen und verarbeiten. Manchmal ist es auch erforderlich, Tabellenkalkulationsdateien zu erstellen und zu schreiben.
In diesem Artikel lernen wir, wie man Tabellenkalkulationsdateien in PHP liest und schreibt. Der Code, den wir erklären werden, funktioniert mit 3 Arten von Tabellenkalkulationen – CSV, XLSX und ODS.
Einstieg
Als Entwickler möchte ich mit verschiedenen Paketen experimentieren, die hilfreich sein können, um reale Probleme zu lösen. Vor kurzem bin ich auf ein Paket namens box/spout gestoßen. Ich mochte die Art und Weise, wie die Bibliothek die Aufgaben erledigte. Mit dieser Bibliothek können Sie Tabellenkalkulationsdateien mit nur wenigen Codezeilen verarbeiten.
Diese Bibliothek kann Dateien jeder Größe verarbeiten. Möglicherweise haben Sie es mit einer großen Datei zu tun. Während des Vorgangs sollte die große Datei den Speicher nicht verbrauchen und ein Leistungsproblem verursachen. Die Spout-Bibliothek löst dieses Problem. Es benötigt nur 3 MB Speicher, um eine Datei zu verarbeiten.
Bevor Sie beginnen, sollte Ihr Server die folgenden Anforderungen erfüllen.
- PHP-Version 7.2 oder höher
- PHP-Erweiterung
php_zip
aktiviert - PHP-Erweiterung
php_xmlreader
aktiviert
Der Benutzer kann mit der phpinfo()
Methode überprüfen, ob alle oben genannten Anforderungen auf Ihrem Server erfüllt sind. Erstellen Sie eine temporäre PHP-Datei und platzieren Sie die folgende Anweisung darin.
Führen Sie nun diese PHP-Datei im Browser aus und Sie sehen PHP-Konfigurationen wie Version, Erweiterungen usw. Sie sollten sehen xmlreader
und zip
Erweiterungen sind aktiviert, wie im Screenshot unten gezeigt.
Sobald Sie die Anforderungen erfüllen, installieren Sie das box/spout
Paket mit dem folgenden Befehl.
composer require box/spout
Tabellenkalkulationsdateien in PHP lesen und schreiben
Spout-Paket ermöglicht die Interaktion mit XLSX-, CSV- und ODS-Dateien. Als Beispiel schreibe ich einen Code für XLSX-Dateien.
Erstellen Sie eine XLSX-Beispieldatei users.xlsx
im Stammverzeichnis und fügen Sie einige Dummy-Einträge hinzu. In meinem Fall hat die Datei folgende Einträge.
Als nächstes schreibe ich einen Code in eine reader.php
Datei, der users.xlsx
die Daten liest und ausdruckt.
reader.php
<?php
require_once 'vendor/autoload.php';
use BoxSpoutReaderCommonCreatorReaderEntityFactory;
$filePath = getcwd().'/users.xlsx';
$reader = ReaderEntityFactory::createReaderFromFile($filePath);
$reader->open($filePath);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
$cells = $row->getCells();
foreach ($cells as $cell) {
echo $cell->getValue();
}
}
}
$reader->close();
So einfach ist das. Mach weiter und probiere es aus.
Andererseits können wir ganz einfach eine XLSX-Datei erstellen und Daten hineinschreiben. Lassen Sie uns eine Datei erstellen writer.php
und unten den Code hinzufügen.
Schriftsteller.php
<?php
require_once 'vendor/autoload.php';
use BoxSpoutWriterCommonCreatorWriterEntityFactory;
use BoxSpoutCommonEntityRow;
$filePath = getcwd().'/new-users.xlsx';
$writer = WriterEntityFactory::createXLSXWriter();
$writer->openToFile($filePath);
// Here is data for XLSX file
$data = [
['Name', 'Email'],
['Steve', '[email protected]'],
['David', '[email protected]'],
];
foreach ($data as $d) {
$cells = [
WriterEntityFactory::createCell($d[0]),
WriterEntityFactory::createCell($d[1]),
];
$singleRow = WriterEntityFactory::createRow($cells);
$writer->addRow($singleRow);
}
$writer->close();
Der obige Code erstellt eine new-users.xlsx
Datei in Ihrem Stammverzeichnis. Wenn Sie diese Datei öffnen, werden einige Zeilen (im Code verwendet) eingefügt.
Bei CSV- und ODS-Dateien müssen Sie $writer
wie folgt ein Objekt erstellen .
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
Ich hoffe, Sie verstehen, wie man Tabellenkalkulationsdateien in PHP liest und schreibt. Ich würde gerne Ihre Gedanken und Vorschläge im Kommentarbereich unten hören.
Zum Thema passende Artikel
- So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet
- So exportieren Sie MySQL-Datenbankdaten mit PHP nach Excel
- So konvertieren Sie HTML in PDF in PHP