Heim >PHP-Framework >Laravel >Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

青灯夜游
青灯夜游nach vorne
2023-01-11 20:43:181868Durchsuche

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Laravel Excel-Paket hat kürzlich Version 3.0 veröffentlicht, die über neue Funktionen verfügt, die zur Vereinfachung erweiterter Anforderungen beitragen können, und äußerst benutzerfreundlich ist. Lassen Sie uns einige der versteckten Funktionen erkunden, die Sie vielleicht nicht kennen und die Laravel Excel zur besten Wahl für Excel-Erweiterungen machen.

1. Daten aus HTML oder Blade importieren

Angenommen, es gibt bereits eine HTML-Tabelle

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Vorlagencode --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>

Sie können es verwenden go Wiederholen Sie den Import dieser Tabelle in Excel

Schritt 1. Generieren Sie eine Exportklasse

php artisan make:export CustomersFromView --model=Customer

Schritt 2. Verwenden Sie FromView zum Betrieb

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

Hier ist die importierte Excel-Datei:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Hinweis: Hier können nur HTML-Tabellen exportiert werden , nicht mit einem Tag wie html, body, div usw.


2. Export in PDF-, HTML- oder andere Formatdateien

Obwohl der Name des Pakets Laravel Excel ist, bietet es eine Vielzahl von Exportformaten und ist sehr einfach zu verwenden :

return Excel::download(new CustomersExport(), &#39;customers.xlsx&#39;, &#39;Html&#39;);

Wenn Sie dies tun, wird es beispielsweise wie unten gezeigt in HTML exportiert:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Es gibt nicht viele Stile:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Nicht nur das, es kann auch als PDF exportiert werden. Die Verwendungsmethode ist dieselbe. Sie müssen lediglich das Format im letzten Parameter angeben. Dokumentbeispiel:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Hinweis: Sie müssen das angegebene PDF-Paket über Composer installieren, z. B.:

composer require dompdf/dompdf

Das exportierte PDF lautet wie folgt:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen


3 Formatieren Sie die Zellen nach Bedarf

Laravel Excel hat einen mächtigen „Vater“ – PhpSpreadsheet. Es verfügt also über verschiedene zugrunde liegende Funktionen, einschließlich verschiedener Arten der Zellformatierung.

Hier ist ein Beispiel für die Verwendung in einer Laravel-Exportklasse, z. B. app/Exports/CustomersExportStyling.php:

Schritt 1. Führen Sie die entsprechende Klasse in der Kopfzeile ein.

use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;

Schritt 2. Verwenden Sie die WithEvents-Schnittstelle im Abschnitt „Implements“.

class CustomersExportStyling implements FromCollection, WithEvents
{
    // ...

Schritt 3. Verwenden Sie das AfterSheet-Ereignis, um die Methode registerEvents() zu erstellen.

/**
 * @return array
 */
public function registerEvents(): array
{
    return [
        AfterSheet::class    => function(AfterSheet $event) {
            // ... 此处你可以任意格式化
        },
    ];
}

Hier ist ein Beispiel:

/**
 * @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);
        },
    ];
}

Diese „zufälligen“ Beispiele zeigen Ergebnisse wie dieses:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Alle oben genannten und weitere Beispiele finden Sie auf der Rezepte-Seite der PhpSpreadsheet-Dokumente.


4. Versteckte Modelleigenschaften

Angenommen, wir haben die Standardtabelle users von Laravel 5.7 erstellt: Laravel 5.7默认的users表:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

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

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

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

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

这是因为在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

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

Jetzt versuchen wir, eine einfache FromCollection zu verwenden, um Benutzertabellendaten zu exportieren:
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,
        ];
    }
}

Im exportierten Excel können Sie nur die folgenden Felder sehen, aber es gibt kein password und remember_token:

Lassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen

🎜Dies liegt daran, dass das versteckte Feldattribut im Benutzer-Modell definiert ist: 🎜rrreee 🎜Diese Felder sind also standardmäßig ausgeblendet. Wenn Sie möchten, dass einige Felder beim Exportieren von Daten nicht exportiert werden, können Sie das ausgeblendete Attribut $hidden direkt im Modell definieren. 🎜🎜🎜5. Formeln🎜🎜Aus irgendeinem Grund werden Formeln in der offiziellen Dokumentation des Laravel Excel-Pakets nicht erwähnt, aber dies ist eine wichtige Funktion von Excel! 🎜🎜Glücklicherweise können wir die Formel direkt in die Klasse schreiben, die die Daten exportiert. Wir müssen den Wert von cell festlegen, etwa so: =A2+1 oder SUM(A1:A10 ). 🎜🎜Eine Möglichkeit besteht darin, die WithMapping-Schnittstelle zu implementieren: 🎜rrreee🎜Die oben genannten sind fünf wenig bekannte Funktionen von Laravel Excel. 🎜🎜🎜Originaladresse: https://laravel-news.com/fünf-hidden-features-of-the-laravel-excel-package🎜🎜Übersetzungsadresse: https://learnku.com/laravel/t/24161🎜

【Verwandte Empfehlungen: Laravel-Video-Tutorial

Das obige ist der detaillierte Inhalt vonLassen Sie uns über fünf wenig bekannte Funktionen von Laravel Excel sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen