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

Kennen Sie diese fünf Funktionen von Laravel Excel?

藏色散人
藏色散人nach vorne
2021-12-10 16:32:414266Durchsuche

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:



    
    
        
        
        
        
        
        
    
    
    
    @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

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:

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

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

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;

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:

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

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

Kennen Sie diese fünf Funktionen von Laravel Excel?

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

class User extends Authenticatable
{
    // ...

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

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

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