Maison >cadre php >Laravel >Développement Laravel : Comment importer et exporter des fichiers CSV à l'aide de Laravel Excel ?

Développement Laravel : Comment importer et exporter des fichiers CSV à l'aide de Laravel Excel ?

WBOY
WBOYoriginal
2023-06-14 12:06:561863parcourir

Laravel est l'un des frameworks PHP les plus remarquables du secteur. Ses fonctions puissantes et son API facile à utiliser le rendent très populaire parmi les développeurs. Dans le développement réel, nous avons souvent besoin d'importer et d'exporter des données, et CSV, en tant que format de données largement utilisé, est également devenu l'un des formats d'importation et d'exportation couramment utilisés. Cet article explique comment utiliser l'extension Laravel Excel pour importer et exporter des fichiers CSV.

1. Installez Laravel Excel

Tout d'abord, nous devons utiliser Composer pour installer Laravel Excel :

composer require maatwebsite/excel

Une fois l'installation terminée, nous devons ajouter le code suivant au tableau des fournisseurs dans le fichier config/app.php :

MaatwebsiteExcelExcelServiceProvider::class,

Ajoutez le code suivant dans le tableau des alias :

'Excel' => MaatwebsiteExcelFacadesExcel::class,

2. Exportez le fichier CSV

Supposons que nous ayons un modèle utilisateur User, qui a une méthode getExportData(), qui renvoie les données à exporter. Ensuite, nous pouvons écrire le code d'exportation comme ceci :

use MaatwebsiteExcelFacadesExcel;
use AppModelsUser;

class UserController extends Controller
{
    public function exportUsers()
    {
        return Excel::download(new UserExport(), 'users.csv');
    }
}

class UserExport implements FromQuery, WithHeadings
{
    public function query()
    {
        return User::query();
    }

    public function headings(): array
    {
        return [
            'ID',
            'Name',
            'Email',
            'Created At',
            'Updated At',
        ];
    }
}

Dans le code ci-dessus, nous utilisons les interfaces FromQuery et WithHeadings de Laravel Excel pour exporter rapidement des données vers un fichier CSV. L'interface FromQuery doit implémenter une méthode query() pour renvoyer l'ensemble de données à exporter ; l'interface WithHeadings doit implémenter une méthode heads() pour renvoyer les informations d'en-tête du fichier CSV. Dans l'opération d'exportation, nous utilisons la méthode Excel::download() pour télécharger, en passant deux paramètres : la classe d'exportation UserExport et le nom de fichier users.csv.

Lorsque les utilisateurs accèdent à cet itinéraire, ils peuvent directement télécharger le fichier CSV exporté.

3. Importer des fichiers CSV

Pour importer des fichiers CSV, nous devons écrire une classe d'importation et implémenter l'interface FromCollection.

Supposons que nous ayons un modèle d'importation d'utilisateur avec une méthode importUsers() qui accepte un fichier CSV téléchargé et importe les données dans la base de données. Nous pouvons écrire comme ceci :

use MaatwebsiteExcelFacadesExcel;
use AppModelsUser;

class UserController extends Controller
{
    public function importUsers(Request $request)
    {
        $request->validate([
            'file' => 'required|mimes:csv,txt',
        ]);

        $path = $request->file('file')->getRealPath();
        $data = Excel::import(new UserImport(), $path);

        return redirect()->back()->with('success', '导入成功');
    }
}

class UserImport implements FromCollection
{
    public function collection(Collection $rows)
    {
        foreach ($rows as $row) {
            User::create([
                'name' => $row[0],
                'email' => $row[1],
            ]);
        }
    }
}

Dans le code ci-dessus, nous avons défini une classe UserImport et implémenté l'interface FromCollection. La méthode collection() est utilisée ici pour traiter les données importées du fichier CSV et les convertir en un objet Collection. Dans cet exemple, nous créons simplement un utilisateur et utilisons la première colonne du fichier comme nom d'utilisateur et la deuxième colonne comme adresse e-mail.

Lors de l'implémentation de la fonction d'importation, nous devons utiliser la méthode Excel::import() pour transmettre la classe d'importation et le chemin du fichier. Cette méthode renverra un tableau de données importées, que nous pourrons transmettre à d'autres processeurs.

4. Résumé

En utilisant l'extension Laravel Excel, nous pouvons facilement importer et exporter des données CSV dans les applications Laravel. Dans l'exemple ci-dessus, nous avons utilisé les interfaces FromQuery, WithHeadings et FromCollection pour exporter et importer des données. Bien entendu, Laravel Excel prend également en charge d'autres interfaces, telles que FromArray, WithTitle, WithMapping, etc. Dans les projets réels, nous pouvons choisir l’interface appropriée pour effectuer des travaux spécifiques d’importation et d’exportation de données en fonction des besoins réels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn