Heim > Artikel > PHP-Framework > Kennen Sie diese fünf Funktionen von Laravel Excel?
1. Daten aus HTML oder Blade importieren
Vorlagencode --resources/views/customers/table.blade.php:
First name | Last name | Created at | Updated 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
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. und darf keine Tags wie html, body, p usw. haben.
2. Export in PDF-, HTML- oder andere Formatdateienreturn 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:
3. Formatieren Sie die Zellen nach BedarfHier 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); }, ]; }
Die Ergebnisse dieser „zufälligen“ Beispiele werden unten angezeigt:
Alle oben genannten und weitere Beispiele finden Sie auf der Seite „Rezepte“ der PhpSpreadsheet-Dokumente.
4. Versteckte Modelleigenschaftenusers
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
password
und remember_token
:
🎜🎜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!