Laravel Excel パッケージ は最近バージョン 3.0 をリリースしました。これには、高度なニーズを簡素化するのに役立つ新機能があり、非常に使いやすくなっています。 Laravel Excel が Excel 拡張機能として最適な選択肢となる、あまり知られていない隠れた機能のいくつかを見てみましょう。
既に HTML テーブルがあるものとします
テンプレート コード --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('customers.table', [ 'customers' => Customer::orderBy('id', 'desc')->take(100)->get() ]); } }
インポートされた Excel ファイルは次のとおりです:
注: ここでエクスポートできるのは HTML テーブルのみです、html、body、div などのタグではありません。
パッケージの名前は Laravel Excel ですが、使用方法は非常に簡単で、クラスに別のパラメーターを追加するだけです。 :
return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');
たとえば、これを実行すると、以下に示すように HTML にエクスポートされます:
ソースコードは次のとおりです:
それだけではありません。 PDF にエクスポートすることもでき、その中から 3 つのライブラリを選択することもできます。使用方法は、最後のパラメータで形式を指定するだけです。 ドキュメントの例:
注: 次のような指定された PDF パッケージを Composer 経由でインストールする必要があります:
composer require dompdf/dompdf
エクスポートされた PDF は次のとおりです:
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); }, ]; }
これらの「ランダム」例は、次のような結果を示します:
上記のすべての例とその他の例は、PhpSpreadsheet ドキュメントの レシピ ページ で見つけることができます。
Laravel 5.7
のデフォルトの users
テーブルを作成したと仮定します: 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
を使用してユーザー テーブル データをエクスポートしてみます。 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, ]; } }ログイン後にコピーエクスポートされた Excel では、次のフィールドのみが表示されますが、
🎜これは、隠しフィールド属性がpassword
とremember_token
はありません: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 サイトの他の関連記事を参照してください。