ホームページ > PHPフレームワーク > Laravel > Laravel Excel のあまり知られていない 5 つの関数について話しましょう

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

青灯夜游
リリース: 2023-01-12 21:03:19
転載
1876 人が閲覧しました

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

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

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

既に HTML テーブルがあるものとします

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

テンプレート コード --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>
ログイン後にコピー

go このテーブルを 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(&#39;customers.table&#39;, [
            &#39;customers&#39; => Customer::orderBy(&#39;id&#39;, &#39;desc&#39;)->take(100)->get()
        ]);
    }
}
ログイン後にコピー

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

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

注: ここでエクスポートできるのは HTML テーブルのみです、html、body、div などのタグではありません。


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

パッケージの名前は Laravel Excel ですが、使用方法は非常に簡単で、クラスに別のパラメーターを追加するだけです。 :

return Excel::download(new CustomersExport(), &#39;customers.xlsx&#39;, &#39;Html&#39;);
ログイン後にコピー

たとえば、これを実行すると、以下に示すように 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 = &#39;A1:W1&#39;;
            $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);

            // 将样式数组应用于B2:G8范围单元格
            $styleArray = [
                &#39;borders&#39; => [
                    &#39;outline&#39; => [
                        &#39;borderStyle&#39; => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
                        &#39;color&#39; => [&#39;argb&#39; => &#39;FFFF0000&#39;],
                    ]
                ]
            ];
            $event->sheet->getDelegate()->getStyle(&#39;B2:G8&#39;)->applyFromArray($styleArray);

            // 将第一行行高设置为20
            $event->sheet->getDelegate()->getRowDimension(1)->setRowHeight(20);

            // 设置 A1:D4 范围内文本自动换行
            $event->sheet->getDelegate()->getStyle(&#39;A1:D4&#39;)
                ->getAlignment()->setWrapText(true);
        },
    ];
}
ログイン後にコピー

これらの「ランダム」例は、次のような結果を示します:

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

上記のすべての例とその他の例は、PhpSpreadsheet ドキュメントの レシピ ページ で見つけることができます。


4. 非表示のモデルプロパティ

Laravel 5.7 のデフォルトの users テーブルを作成したと仮定します: Laravel 5.7默认的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 = [
        &#39;password&#39;, &#39;remember_token&#39;,
    ];
}
ログイン後にコピー

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


5. 公式

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

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

其中一种方式就是实现WithMapping

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

ここで、単純な FromCollection を使用してユーザー テーブル データをエクスポートしてみます。
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,
            &#39;=A2+1&#39;,
            $customer->first_name,
            $customer->last_name,
            $customer->email,
        ];
    }
}
ログイン後にコピー

エクスポートされた Excel では、次のフィールドのみが表示されますが、passwordremember_token はありません:

Laravel Excel のあまり知られていない 5 つの関数について話しましょう

🎜これは、隠しフィールド属性が User モデルで定義されているためです。 🎜rrreee 🎜 したがって、これらのフィールドはデフォルトで非表示になります。データのエクスポート時に一部のフィールドをエクスポートしたくない場合は、モデル内で非表示属性 $hidden を直接定義できます。 🎜🎜🎜5. 数式🎜🎜 何らかの理由で、Laravel Excel パッケージの公式ドキュメントには数式について言及されていませんが、これは Excel の重要な機能です。 🎜🎜幸いなことに、データをエクスポートするクラスに数式を直接記述することができます。=A2+1 または SUM(A1:A10) のように、<code>cell の値を設定する必要があります。 )コード>。 🎜🎜 1 つの方法は、WithMapping インターフェイスを実装することです: 🎜rrreee🎜 上記は、Laravel Excel のあまり知られていない 5 つの関数です。 🎜🎜🎜元のアドレス: https://laravel-news.com/five-hidden-features-of-the-laravel-excel-package🎜🎜翻訳アドレス: https://learnku.com/laravel/t/24161🎜

【関連おすすめ: laravelビデオチュートリアル

以上がLaravel Excel のあまり知られていない 5 つの関数について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート