✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet

2.175

Bei der Arbeit an Webanwendungen stoßen wir manchmal auf eine Situation, in der wir eine CSV- oder Excel-Datei in die Datenbank importieren müssen. Dies ist eine bevorzugte Methode, um große Daten in die Datenbank zu importieren, anstatt sie einzeln einzugeben.

PhpSpreadsheet ist die Bibliothek, die Ihnen beim Lesen der CSV- oder Excel-Datei hilft. Die Bibliothek bietet Unterstützung für das Lesen und Schreiben verschiedener Arten von Dateiformaten. Unten ist der Screenshot der unterstützten Dateiformate.

So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet

Bevor ich diese Bibliothek kennenlernte, habe ich die fgetcsv- Methode zum Lesen der CSV-Datei verwendet. Und im Fall von Excel-Dateien musste ich zuerst Excel in CSV konvertieren und dann mit der fgetcsv()Funktion lesen .

PhpSpreadsheet vereinfacht diese Aufgabe für Entwickler. Mit PhpSpreadsheet ist es einfacher, die Daten aus CSV- und Excel-Dateien zu verarbeiten. Außerdem müssen Sie Excel zum Lesen nicht in CSV konvertieren, die Bibliothek liest die Excel-Datei direkt.

Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie CSV- und Excel-Dateien mit PhpSpreadsheet lesen.

Installation

Zur Installation dieser Bibliothek empfehle ich die Verwendung des Composer. Öffnen Sie das Terminal in Ihrem Projekt-Stammverzeichnis und führen Sie den Befehl aus:

composer require phpoffice/phpspreadsheet

Im nächsten Teil des Tutorials werde ich CSV/Excel-Dateien lesen und deren Daten in die Datenbank einfügen. Dazu habe ich eine Dummy-Datei erstellt, die Spalten und Daten wie folgt enthält:

So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet

Um diese Details zu speichern, habe ich auch eine Tabelle ‘users’ in der Datenbank erstellt.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Für das Tutorial verwende ich die obigen Dummy-Daten. Der Benutzer sollte die Tabellenstruktur gemäß seinem Datensatz ändern.

Erstellen Sie eine db.phpund fügen Sie einen Code für die Datenbankverbindung hinzu.

db.php

<?php
$db_host = 'DB_HOST';
$db_username = 'DB_USERNAME';
$db_password = 'DB_PASSWORD';
$db_name = 'DB_NAME';
  
$db = new mysqli($db_host, $db_username, $db_password, $db_name);
  
if($db->connect_error){
    die("Unable to connect database: ". $db->connect_error);
}

Stellen Sie sicher, dass Sie die Platzhalter durch die tatsächlichen Werte ersetzen.

CSV/Excel-Datei in PHP lesen

Lassen Sie uns die eigentliche Codierung durchführen. Erstellen Sie zunächst ein Formular mit einer Dateieingabe- und Senden-Schaltfläche. Der Benutzer lädt seine CSV/Excel-Datei hoch, klicken Sie auf die Schaltfläche Senden. Bei der Übermittlung sollten die Einträge aus der hochgeladenen Datei in die Tabelle ‘Benutzer’ eingefügt werden.

form.php

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File Upload</label>
        <input type="file" name="file" class="form-control" id="exampleInputFile">
    </div>
    <button type="submit" name="submit" class="btn btn-primary">Submit</button>
</form>

Als nächstes sieht der Code, der bei der Übermittlung ausgeführt wird, wie folgt aus.

<?php
require_once 'vendor/autoload.php';
require_once 'db.php';
  
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetReaderCsv;
use PhpOfficePhpSpreadsheetReaderXlsx;
  
if (isset($_POST['submit'])) {
 
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     
    if(isset($_FILES['file']['name']) && in_array($_FILES['file']['type'], $file_mimes)) {
     
        $arr_file = explode('.', $_FILES['file']['name']);
        $extension = end($arr_file);
     
        if('csv' == $extension) {
            $reader = new PhpOfficePhpSpreadsheetReaderCsv();
        } else {
            $reader = new PhpOfficePhpSpreadsheetReaderXlsx();
        }
 
        $spreadsheet = $reader->load($_FILES['file']['tmp_name']);
 
        $sheetData = $spreadsheet->getActiveSheet()->toArray();
 
        if (!empty($sheetData)) {
            for ($i=1; $i<count($sheetData); $i++) {
                $name = $sheetData[$i][1];
                $email = $sheetData[$i][2];
                $db->query("INSERT INTO USERS(name, email) VALUES('$name', '$email')");
            }
        }
    }
}
?>

Im obigen Code finde ich den Dateityp und die Grundlage dafür heraus, dass ich die Datei mit den von der Bibliothek bereitgestellten Funktionen lese. Weitere Informationen hierzu finden Sie in der offiziellen Dokumentation hier.

Ich hoffe, Sie verstehen, wie man CSV- und Excel-Dateien mit PhpSpreadsheet liest. Ich würde gerne Ihre Gedanken und Vorschläge im Kommentarbereich unten hören.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen