Pack Laravel Excel a récemment publié la version 3.0, qui possède de nouvelles fonctionnalités qui peuvent aider à simplifier les besoins avancés et est extrêmement utilisable. Explorons certaines des fonctionnalités cachées que vous ne connaissez peut-être pas et qui font de Laravel Excel le meilleur choix pour les extensions Excel.
Supposons qu'il existe déjà un tableau HTML
code de modèle--resources/views/customers/table.blade.php:
<table class="table"> <thead> <tr> <th></th> <th>First name</th> <th>Last name</th> <th>Email</th> <th>Created at</th> <th>Updated at</th> </tr> </thead> <tbody> @foreach ($customers as $customer) <tr> <td>{{ $customer->id }}</td> <td>{{ $customer->first_name }}</td> <td>{{ $customer->last_name }}</td> <td>{{ $customer->email }}</td> <td>{{ $customer->created_at }}</td> <td>{{ $customer->updated_at }}</td> </tr> @endforeach </tbody> </table>
Vous pouvez l'utiliser pour go Répétez l'importation de ce tableau dans Excel
Étape 1. Générez une classe d'exportation
php artisan make:export CustomersFromView --model=Customer
Étape 2. Utilisez FromView pour opérer
namespace App\Exports; use App\Customer; use Illuminate\Contracts\View\View; use Maatwebsite\Excel\Concerns\FromView; class CustomersExportView implements FromView { public function view(): View { return view('customers.table', [ 'customers' => Customer::orderBy('id', 'desc')->take(100)->get() ]); } }
Voici le fichier Excel importé :
Remarque : seuls les tableaux HTML peuvent être exportés ici , pas avec une balise comme html, body, div etc.
Bien que le nom du package soit Laravel Excel, il fournit une variété de formats d'exportation et est très simple à utiliser. :
return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');
Par exemple, si vous faites cela, il sera exporté au format HTML, comme indiqué ci-dessous :
Voici le code source :
Pas seulement ça, il. peut également être exporté au format PDF, vous pouvez même choisir parmi trois bibliothèques. La méthode d'utilisation est la même. Il vous suffit de spécifier le format dans le dernier paramètre. Exemple de document :
Remarque : Vous devez installer le package PDF spécifié via composer, tel que :
composer require dompdf/dompdf
Le PDF exporté est le suivant :
Laravel. Excel a un « père » puissant : PhpSpreadsheet. Il a donc diverses fonctions sous-jacentes, notamment diverses méthodes de formatage des cellules.
Voici un exemple de la façon de l'utiliser dans une classe Laravel Export, telle que app/Exports/CustomersExportStyling.php :
Étape 1. Introduisez la classe appropriée dans l'en-tête.
use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet;
Étape 2. Utilisez l'interface WithEvents dans la section des outils.
class CustomersExportStyling implements FromCollection, WithEvents { // ...
Étape 3. Utilisez l'événement AfterSheet pour créer la méthode registerEvents().
/** * @return array */ public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { // ... 此处你可以任意格式化 }, ]; }
Voici un exemple :
/** * @return array */ public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { // 所有表头-设置字体为14 $cellRange = 'A1:W1'; $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14); // 将样式数组应用于B2:G8范围单元格 $styleArray = [ 'borders' => [ 'outline' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK, 'color' => ['argb' => 'FFFF0000'], ] ] ]; $event->sheet->getDelegate()->getStyle('B2:G8')->applyFromArray($styleArray); // 将第一行行高设置为20 $event->sheet->getDelegate()->getRowDimension(1)->setRowHeight(20); // 设置 A1:D4 范围内文本自动换行 $event->sheet->getDelegate()->getStyle('A1:D4') ->getAlignment()->setWrapText(true); }, ]; }
Ces exemples « aléatoires » affichent des résultats comme celui-ci :
Vous pouvez trouver tout ce qui précède et d'autres exemples dans la Page Recettes de la documentation PhpSpreadsheet.
Supposons que nous ayons créé la table users
par défaut de Laravel 5.7
: Laravel 5.7
默认的users
表:
现在我们尝试用简单的FromCollection
来导出用户表数据:
class UsersExport implements FromCollection { public function collection() { return User::all(); } }
在导出的Excel 里,你只能看到如下字段,但是没有password
和remember_token
:
这是因为在User
模型里定义了隐藏字段的属性:
class User extends Authenticatable { // ... /** * 这个数组用来定义需要隐藏的字段。 * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
所以,默认情况下这些字段是隐藏的,如果你想在导出数据的时候某些字段不被导出的话,可以直接在模型中定义隐藏属性$hidden
。
出于某种原因,Laravel Excel 包的官方文档中并没有提及公式,但是这是Excel 重要的功能!
幸运的是,我们可以直接将公式写在导出数据的类中,我们需要设置cell
的值,就像这样:=A2+1 or SUM(A1:A10)
。
其中一种方式就是实现WithMapping
FromCollection
pour exporter les données de la table utilisateur : use App\Customer; use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\WithMapping; class CustomersExportFormulas implements FromCollection, WithMapping { public function collection() { return Customer::all(); } /** * @var Customer $customer * @return array */ public function map($customer): array { return [ $customer->id, '=A2+1', $customer->first_name, $customer->last_name, $customer->email, ]; } }Dans l'Excel exporté, vous ne pouvez voir que les champs suivants, mais il n'y a pas de
🎜Cela est dû au fait que l'attribut de champ caché est défini dans le modèlemot de passe
ni deremember_token
:Utilisateur
: 🎜rrreee 🎜Donc, ces champs sont masqués par défaut. Si vous souhaitez que certains champs ne soient pas exportés lors de l'export des données, vous pouvez définir directement l'attribut caché$hidden
dans le modèle. 🎜🎜🎜5. Formules🎜🎜Pour une raison quelconque, les formules ne sont pas mentionnées dans la documentation officielle du package Laravel Excel, mais c'est une fonctionnalité importante d'Excel ! 🎜🎜Heureusement, nous pouvons écrire la formule directement dans la classe qui exporte les données. Nous devons définir la valeur decell
, comme ceci :=A2+1 ou SUM(A1:A10). )
. 🎜🎜Une solution consiste à implémenter l'interfaceWithMapping
: 🎜rrreee🎜Ci-dessus sont cinq fonctions peu connues de Laravel Excel. 🎜🎜🎜Adresse originale : https://laravel-news.com/five-hidden-features-of-the-laravel-excel-package🎜🎜Adresse de traduction : https://learnku.com/laravel/t/24161🎜
【Recommandation associée : tutoriel vidéo laravel】
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!