Das Importieren von Excel-Dateien ist praktisch, wenn Sie eine Anwendung in großem Umfang aufbauen, bei der Sie eine Reihe von Daten aus CSV- oder Excel-Dateien importieren müssen. In diesem kurzen Tutorial werden wir das Importieren von Excel-Dateien mit Laravel durchgehen und zwischendurch einige verrückte Hacks und Tricks ausprobieren.
Installieren des Pakets
composer require maatwebsite/excel
Fügen Sie die Service Provider & Facade
Direkt in Ihr config/app.php
, die service provider.
'providers' => [ Maatwebsite\Excel\ExcelServiceProvider::class, ]
und die facade
'aliases' => [ 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ]
Exportieren Sie Excel-Dateien mit Ihrem Laravel
Beispiel
Im folgenden Beispiel erstellen wir einen einfachen Seeder und importieren Daten aus der CSV-Datei.
Schritt#1 - Erstellen einer UsersTableImport
class
Erstellen einer UsersTableImport
class irgendwo in Ihrem Inneren database/seeds
Verzeichnis. Legen wir es unter database/seeds/imports/UsersTableImport.php
und fügen Sie den folgenden Code ein.
class UsersTableImport implements toCollection, WithChunkReading, WithStartRow { public function collection( Collection $rows ) { foreach ( $rows as $row ) { User::create( [ 'name' => $row[0], 'email' => $row[1], ] ); } } /** * @return int */ public function chunkSize(): int { return 250; } /** * @return int */ public function startRow(): int { return 2; }
Hier haben wir Daten in eine Sammlung importiert. Die folgenden Punkte erklären ein wenig von dem, was wir hier getan haben.
- Wenn Sie größere csv-Dateien haben, können Sie jederzeit
WithChunkReading
interface und legen Sie die Größe für schnellere Importe fest. - Wenn die erste Zeile Ihrer CSV-Datei die Titel enthält, können Sie die Funktion
WithStartRow
interface um Ihre benutzerdefinierte Zeile festzulegen, aus der Daten gelesen werden sollen.
Schauen Sie sich die Dokumente an, wenn Sie ein besseres Verständnis aller Schnittstellen haben wollen.
Lesen Sie auch: Laravel-Bereitstellungen mit Envoy
Schritt#2 - Erstellen einer Seeder
Erstellen Sie eine neue Sämaschine mit artisan php artisan make:seeder UsersTableSeeder
. Im Inneren des run()
methode, fügen Sie einfach den folgenden Code ein (angenommen, wir haben bereits eine csv-Datei in seeds/csvs/users_table_seeder.csv
).
Excel::import( new UsersTableImport, database_path( 'seeds/csvs/users_table_seeder.csv' ), null, \Maatwebsite\Excel\Excel::CSV );
Schlussfolgerung
Das war's, Sie können es einfach ausprobieren, indem Sie php artisan migrate
und Sie werden sehen, dass sich die Daten in Ihrer DB füllen. Das Importieren von Excel-Dateien war noch nie so einfach. Weitere Informationen über dieses großartige Paket finden Sie auf der documentation.