Maison > cadre php > Laravel > le corps du texte

Parlons de cinq fonctions peu connues de Laravel Excel

青灯夜游
Libérer: 2023-01-12 21:03:19
avant
1752 Les gens l'ont consulté

Parlons de cinq fonctions peu connues de Laravel Excel

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.

1. Importez des données depuis HTML ou Blade

Supposons qu'il existe déjà un tableau HTML

Parlons de cinq fonctions peu connues de Laravel Excel

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>
Copier après la connexion

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
Copier après la connexion

É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(&#39;customers.table&#39;, [
            &#39;customers&#39; => Customer::orderBy(&#39;id&#39;, &#39;desc&#39;)->take(100)->get()
        ]);
    }
}
Copier après la connexion

Voici le fichier Excel importé :

Parlons de cinq fonctions peu connues de Laravel Excel

Remarque : seuls les tableaux HTML peuvent être exportés ici , pas avec une balise comme html, body, div etc.


2. Exporter vers des fichiers PDF, HTML ou autres formats

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(), &#39;customers.xlsx&#39;, &#39;Html&#39;);
Copier après la connexion

Par exemple, si vous faites cela, il sera exporté au format HTML, comme indiqué ci-dessous :

Parlons de cinq fonctions peu connues de Laravel Excel

Voici le code source :

Parlons de cinq fonctions peu connues de Laravel Excel

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 :

Parlons de cinq fonctions peu connues de Laravel Excel

Remarque : Vous devez installer le package PDF spécifié via composer, tel que :

composer require dompdf/dompdf
Copier après la connexion

Le PDF exporté est le suivant :

Parlons de cinq fonctions peu connues de Laravel Excel


3. Formatez les cellules selon vos besoins

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;
Copier après la connexion

Étape 2. Utilisez l'interface WithEvents dans la section des outils.

class CustomersExportStyling implements FromCollection, WithEvents
{
    // ...
Copier après la connexion

É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) {
            // ... 此处你可以任意格式化
        },
    ];
}
Copier après la connexion

Voici un exemple :

/**
 * @return array
 */
public function registerEvents(): array
{
    return [
        AfterSheet::class    => function(AfterSheet $event) {
            // 所有表头-设置字体为14
            $cellRange = &#39;A1:W1&#39;;
            $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);

            // 将样式数组应用于B2:G8范围单元格
            $styleArray = [
                &#39;borders&#39; => [
                    &#39;outline&#39; => [
                        &#39;borderStyle&#39; => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
                        &#39;color&#39; => [&#39;argb&#39; => &#39;FFFF0000&#39;],
                    ]
                ]
            ];
            $event->sheet->getDelegate()->getStyle(&#39;B2:G8&#39;)->applyFromArray($styleArray);

            // 将第一行行高设置为20
            $event->sheet->getDelegate()->getRowDimension(1)->setRowHeight(20);

            // 设置 A1:D4 范围内文本自动换行
            $event->sheet->getDelegate()->getStyle(&#39;A1:D4&#39;)
                ->getAlignment()->setWrapText(true);
        },
    ];
}
Copier après la connexion

Ces exemples « aléatoires » affichent des résultats comme celui-ci :

Parlons de cinq fonctions peu connues de Laravel Excel

Vous pouvez trouver tout ce qui précède et d'autres exemples dans la Page Recettes de la documentation PhpSpreadsheet.


4. Propriétés du modèle cachées

Supposons que nous ayons créé la table users par défaut de Laravel 5.7 : Laravel 5.7默认的users表:

Parlons de cinq fonctions peu connues de Laravel Excel

现在我们尝试用简单的FromCollection来导出用户表数据:

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}
Copier après la connexion

在导出的Excel 里,你只能看到如下字段,但是没有passwordremember_token

Parlons de cinq fonctions peu connues de Laravel Excel

这是因为在User模型里定义了隐藏字段的属性:

class User extends Authenticatable
{
    // ...

    /**
     * 这个数组用来定义需要隐藏的字段。
     *
     * @var array
     */
    protected $hidden = [
        &#39;password&#39;, &#39;remember_token&#39;,
    ];
}
Copier après la connexion

所以,默认情况下这些字段是隐藏的,如果你想在导出数据的时候某些字段不被导出的话,可以直接在模型中定义隐藏属性$hidden


5. 公式

出于某种原因,Laravel Excel 包的官方文档中并没有提及公式,但是这是Excel 重要的功能!

幸运的是,我们可以直接将公式写在导出数据的类中,我们需要设置cell 的值,就像这样:=A2+1 or SUM(A1:A10)

其中一种方式就是实现WithMapping

Parlons de cinq fonctions peu connues de Laravel Excel

Maintenant, nous essayons d'utiliser un simple 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,
            &#39;=A2+1&#39;,
            $customer->first_name,
            $customer->last_name,
            $customer->email,
        ];
    }
}
Copier après la connexion

Dans l'Excel exporté, vous ne pouvez voir que les champs suivants, mais il n'y a pas de mot de passe ni de remember_token :

Parlons de cinq fonctions peu connues de Laravel Excel

🎜Cela est dû au fait que l'attribut de champ caché est défini dans le modèle 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 de cell, comme ceci : =A2+1 ou SUM(A1:A10). ). 🎜🎜Une solution consiste à implémenter l'interface WithMapping : 🎜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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!