Maison >cadre php >Laravel >Parlons de cinq fonctions peu connues de Laravel Excel

Parlons de cinq fonctions peu connues de Laravel Excel

青灯夜游
青灯夜游avant
2023-01-11 20:43:181865parcourir

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>

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

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;);

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

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;

É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 = &#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);
        },
    ];
}

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();
    }
}

在导出的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;,
    ];
}

所以,默认情况下这些字段是隐藏的,如果你想在导出数据的时候某些字段不被导出的话,可以直接在模型中定义隐藏属性$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,
        ];
    }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer