Heim > PHP-Framework > Laravel > Kennen Sie diese fünf Funktionen von Laravel Excel?

Kennen Sie diese fünf Funktionen von Laravel Excel?

藏色散人
Freigeben: 2021-12-16 15:11:49
nach vorne
4268 Leute haben es durchsucht

1. Daten aus HTML oder Blade importieren

Angenommen, es gibt bereits eine HTML-Tabelle

Kennen Sie diese fünf Funktionen von Laravel Excel?Vorlagencode --resources/views/customers/table.blade.php:

Nach dem Login kopieren
                                                                                   @foreach ($customers as $customer)                                                                     @endforeach     
First nameLast nameEmailCreated atUpdated at
{{ $customer->id }}{{ $customer->first_name }}{{ $customer->last_name }}{{ $customer->email }}{{ $customer->created_at }}{{ $customer->updated_at }}

Sie können es verwenden, um das zu wiederholen import Übertragen Sie diese Tabelle nach Excel

Schritt 1. Generieren Sie eine Exportklasse

php artisan make:export CustomersFromView --model=Customer
Nach dem Login kopieren

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('customers.table', [
            'customers' => Customer::orderBy('id', 'desc')->take(100)->get()
        ]);
    }
}
Nach dem Login kopieren

Hier ist die importierte Excel-Datei:

Kennen Sie diese fünf Funktionen von Laravel Excel?Hinweis: Hier können nur HTML-Tabellen exportiert werden. und darf keine Tags wie html, body, p usw. haben.

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(), 'customers.xlsx', 'Html');
Nach dem Login kopieren

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

Kennen Sie diese fünf Funktionen von Laravel Excel? Es gibt nicht viele Stile:

Kennen Sie diese fünf Funktionen von Laravel Excel? 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:

Kennen Sie diese fünf Funktionen von Laravel Excel?Hinweis: Sie müssen das angegebene PDF-Paket über Composer installieren, z. B.:

composer require dompdf/dompdf
Nach dem Login kopieren

Das exportierte PDF lautet wie folgt:

Kennen Sie diese fünf Funktionen von Laravel Excel?

3. Formatieren Sie die Zellen nach Bedarf

Laravel Excel Dort ist ein mächtiger „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;
Nach dem Login kopieren

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

class CustomersExportStyling implements FromCollection, WithEvents
{
    // ...
Nach dem Login kopieren

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) {
            // ... 此处你可以任意格式化
        },
    ];
}
Nach dem Login kopieren

Hier ist ein Beispiel:

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

Die Ergebnisse dieser „zufälligen“ Beispiele werden unten angezeigt:

Kennen Sie diese fünf Funktionen von Laravel Excel?Alle oben genannten und weitere Beispiele finden Sie auf der Seite „Rezepte“ der PhpSpreadsheet-Dokumente.

4. Versteckte Modelleigenschaften

Angenommen, wir haben die Standardtabelle users von Laravel 5.7 erstellt:

Kennen Sie diese fünf Funktionen von Laravel Excel?Laravel 5.7默认的users表:

Kennen Sie diese fünf Funktionen von Laravel Excel?

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

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

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

Kennen Sie diese fünf Funktionen von Laravel Excel?

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

class User extends Authenticatable
{
    // ...

    /**
     * 这个数组用来定义需要隐藏的字段。
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}
Nach dem Login kopieren

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


5. 公式

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

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

其中一种方式就是实现WithMapping

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,
            '=A2+1',
            $customer->first_name,
            $customer->last_name,
            $customer->email,
        ];
    }
}
Nach dem Login kopieren
Im exportierten Excel können Sie nur die folgenden Felder sehen, aber es gibt kein password und remember_token:

Kennen Sie diese fünf Funktionen von Laravel Excel?🎜🎜Dies liegt daran, dass das ausgeblendete 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. 🎜🎜Wenn Sie mehr wissen möchten, habe ich eine Reihe von Online-Tutorials zum Excel-Export/Import in Laravel, schauen Sie sich diese an!🎜

Originaladresse: https://laravel-news.com/five-hidden-features-of-the-laravel-excel-package

Übersetzungsadresse: https://learnku.com/laravel/t/24161

Das obige ist der detaillierte Inhalt vonKennen Sie diese fünf Funktionen von Laravel Excel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage