ホームページ >PHPフレームワーク >Laravel >Laravel Excelの5つの機能をご存知ですか?

Laravel Excelの5つの機能をご存知ですか?

藏色散人
藏色散人転載
2021-12-10 16:32:414261ブラウズ

Laravel Excel パッケージはバージョン 3.0 をリリースしました。これには、高度なニーズを簡素化するのに役立つ新機能があり、非常に使いやすくなっています。 Laravel Excel が Excel 拡張機能として最適な選択肢となる、あまり知られていない隠れた機能のいくつかを見てみましょう。

1. HTML または Blade からデータをインポートする

HTML テーブルがすでに存在すると仮定します

Laravel Excelの5つの機能をご存知ですか?

テンプレート コード -- resource/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 }}

これを使用して、このテーブルを Excel に繰り返しインポートできます

ステップ 1. エクスポート クラスを生成します

php artisan make:export CustomersFromView --model=Customer

ステップ 2. を使用しますFromView で操作します

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

インポートされた Excel ファイルは次のとおりです:

Laravel Excelの5つの機能をご存知ですか?

注: ここでは HTML テーブルのみをエクスポートでき、タグを含めることはできません。 html、body、pet et al.


2. PDF、HTML、またはその他の形式のファイルへのエクスポート

パッケージの名前は Laravel Excel ですが、さまざまなエクスポート形式が提供されており、使い方は非常に簡単です. 、別のパラメータをクラスに追加するだけです:

return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');

たとえば、これを実行すると、以下に示すように HTML にエクスポートされます:

Laravel Excelの5つの機能をご存知ですか?

あまりにも多くのスタイルがあります。ソースコードは次のとおりです:

Laravel Excelの5つの機能をご存知ですか?

それだけでなく、PDF にエクスポートすることもでき、そこから 3 つのライブラリを選択することもできます使用方法は同じで、最後のパラメータに形式を指定するだけです。ドキュメントの例:

Laravel Excelの5つの機能をご存知ですか?

注: 指定された PDF パッケージは、composer を通じてインストールする必要があります。例:

composer require dompdf/dompdf

エクスポートされた PDF は次のとおりです:

Laravel Excelの5つの機能をご存知ですか?


3. オンデマンドでセルをフォーマットする

Laravel Excel には、PhpSpreadsheet という強力な「父」がいます。したがって、セルの書式設定のさまざまな方法を含む、さまざまな基礎となる機能があります。

これを Laravel Export クラス (app/Exports/CustomersExportStyling.php など) で使用する方法の例を次に示します。

ステップ 1. ヘッダーに適切なクラスを導入します。

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

ステップ 2. 実装セクションで WithEvents インターフェイスを使用します。

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

ステップ 3. AfterSheet イベントを使用して registerEvents() メソッドを作成します。

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

ここに例があります:

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

これらの「ランダム」サンプルによって表示される結果は次のとおりです:

Laravel Excelの5つの機能をご存知ですか?

次のとおりです。上記のすべてとその他の例は、PhpSpreadsheet ドキュメントのレシピ ページにあります。


4. 非表示のモデル属性

Laravel 5.7default users テーブル:

# を作成したと仮定します。 Laravel Excelの5つの機能をご存知ですか?

##ここで、単純な

FromCollection を使用してユーザー テーブル データをエクスポートしてみます。

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}
エクスポートされた Excel では、次のフィールドのみが表示されますが、

passwordremember_token はありません:

Laravel Excelの5つの機能をご存知ですか?

これは、隠しフィールドが

User モデルで定義されているためです。属性:

class User extends Authenticatable
{
    // ...

    /**
     * 这个数组用来定义需要隐藏的字段。
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}
したがって、これらのフィールドはデフォルトで非表示になります。データのエクスポート時に一部のフィールドをエクスポートしたくない場合は、モデル

$hiddenで非表示の属性を直接定義できます。


5. 数式

何らかの理由で、Laravel Excel パッケージの公式ドキュメントには数式について言及されていませんが、これは Excel の重要な機能です。

幸いなことに、データをエクスポートするクラスに数式を直接記述することができます。

cell の値を次のように設定する必要があります: =A2 1 または SUM(A1 :A10)

方法の 1 つは、

WithMapping インターフェイスを実装することです。

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,
        ];
    }
}
上記は、Laravel Excel のあまり知られていない 5 つの関数です。

さらに詳しく知りたい場合は、Laravel での Excel のエクスポート/インポートに関する一連のオンライン チュートリアルを用意しています。ぜひチェックしてください!

元のアドレス: https://laravel-news.com/five-hidden-features-of-the-laravel-excel-package

翻訳アドレス: https://learnku.com /laravel/t/24161

以上がLaravel Excelの5つの機能をご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。