Laravel News a publié cette synthèse le 22 septembre 2026. Elle replace Fast Excel 5 dans l'évolution du package depuis l'article de 2020 consacré à la version 2.2. Cette ancienne génération proposait des exports depuis des collections, des téléchargements dans le navigateur et des classeurs à plusieurs feuilles. La branche 5.x vise désormais les imports opérationnels volumineux, le découpage des traitements en jobs, ainsi que la sélection des feuilles et des colonnes.
<?php
use App\Models\Contact;
use Illuminate\Support\LazyCollection;
use Rap2hpoutre\FastExcel\FastExcel;
(new FastExcel)->importLazy('contacts.xlsx')
->chunk(1_000)
->each(function (LazyCollection $contacts) {
Contact::insert($contacts->all());
});Fast Excel 5 demande PHP 8.0 ou une version ultérieure, avec Laravel 6 ou plus récent. La version actuelle prend en charge Laravel 6 à 13 et s'appuie sur OpenSpout 4. Le passage de box/spout à openspout/openspout fait partie de l'évolution majeure. Les projets encore basés sur Laravel 5 ou PHP 7 avec Fast Excel 2 doivent organiser séparément la mise à jour de leurs dépendances.
Le package conserve une approche centrée sur la lecture et l'écriture de lignes, avec une faible consommation mémoire. La version 5.12 a introduit importLazy() en parallèle de changements concernant l'export en streaming. La méthode expose les lignes via Illuminate\Support\LazyCollection, ce qui permet de traiter des lots destinés à la base de données sans conserver tout le fichier chargé. Le dépôt contient readme-export-bench.php, un benchmark qui compare un export par générateur avec celui d'une collection matérialisée. L'article rapproche aussi cette méthode du traitement des gros CSV qui demande habituellement un parsing manuel.
Les méthodes headerRow(), startRow() et limitRows() servent à découper un import en portions. headerRow() récupère les noms de champs dans la ligne d'en-tête réelle. startRow() indique le début de la portion, et limitRows() en fixe la taille maximale. Jusqu'à Fast Excel 5.17, startRow() utilisait aussi la ligne choisie comme en-tête. Une portion suivante pouvait donc prendre une ligne de données pour ses clés. headerRow() sépare maintenant ces deux rôles et conserve le fonctionnement antérieur de startRow() quand la nouvelle option n'est pas activée. La PR #418 a ajouté cette méthode.
Fast Excel 5.16 a ajouté sheet() pour choisir une feuille par son nom et onlyColumns() pour limiter l'import aux colonnes nécessaires. onlyColumns() accepte des lettres de colonnes ou des positions commençant à un. Les valeurs A, B et H sont donc possibles. La méthode évite les champs vides produits par un formatage qui s'étend bien au-delà des données. limitColumns() couvre les cas où toutes les colonnes jusqu'à une position donnée sont nécessaires. Cette version a aussi accepté une instance de cellule OpenSpout comme valeur d'export. La PR #419 correspond à ces changements.
La version 5.17 a livré escapeFormulas() dans la PR #411. Appelée avant l'export, la méthode écrit comme texte les valeurs qui commencent par =, +, - ou @. Les logiciels de tableur ne les interprètent ainsi pas comme des formules lorsque ces données proviennent d'un CSV importé ou d'un champ contrôlé par l'utilisateur. L'installation Composer utilise composer require rap2hpoutre/fast-excel.




Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.