Heim >PHP-Framework >Laravel >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.
Angenommen, es gibt bereits eine HTML-Tabelle
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('customers.table', [ 'customers' => Customer::orderBy('id', 'desc')->take(100)->get() ]); } }
Hier ist die importierte Excel-Datei:
Hinweis: Hier können nur HTML-Tabellen exportiert werden , nicht mit einem Tag wie html, body, div usw.
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');
Wenn Sie dies tun, wird es beispielsweise wie unten gezeigt in HTML exportiert:
Es gibt nicht viele Stile:
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:
Hinweis: Sie müssen das angegebene PDF-Paket über Composer installieren, z. B.:
composer require dompdf/dompdf
Das exportierte PDF lautet wie folgt:
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 = '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); }, ]; }
Diese „zufälligen“ Beispiele zeigen Ergebnisse wie dieses:
Alle oben genannten und weitere Beispiele finden Sie auf der Rezepte-Seite der PhpSpreadsheet-Dokumente.
Angenommen, wir haben die Standardtabelle users
von Laravel 5.7
erstellt: 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
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, ]; } }Im exportierten Excel können Sie nur die folgenden Felder sehen, aber es gibt kein
🎜Dies liegt daran, dass das versteckte Feldattribut impassword
undremember_token
: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 voncell
festlegen, etwa so:=A2+1 oder SUM(A1:A10 )
. 🎜🎜Eine Möglichkeit besteht darin, dieWithMapping
-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!