>  기사  >  PHP 프레임워크  >  Laravel Excel의 잘 알려지지 않은 5가지 기능에 대해 이야기해 보겠습니다.

Laravel Excel의 잘 알려지지 않은 5가지 기능에 대해 이야기해 보겠습니다.

青灯夜游
青灯夜游앞으로
2023-01-11 20:43:181798검색

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로 내보낼 수도 있습니다. 세 가지 라이브러리 중에서 선택할 수도 있습니다. 사용 방법은 동일합니다. 다음은 몇 가지 예입니다. 문서 예:

Laravel Excel의 잘 알려지지 않은 5가지 기능에 대해 이야기해 보겠습니다.

참고: 다음과 같이 지정된 PDF 패키지를 작곡가를 통해 설치해야 합니다.

composer require dompdf/dompdf

내보낸 PDF는 다음과 같습니다.

Laravel Excel의 잘 알려지지 않은 5가지 기능에 대해 이야기해 보겠습니다.


3 필요에 따라 셀 서식을 지정합니다.

Laravel. Excel에는 강력한 "아버지"인 PhpSpreadsheet가 있습니다. 따라서 다양한 셀 형식 지정 방법을 포함하여 다양한 기본 기능이 있습니다.

app/Exports/CustomersExportStyling.php와 같은 Laravel 내보내기 클래스에서 이를 사용하는 방법에 대한 예는 다음과 같습니다.

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의 값을 설정해야 합니다. ). 🎜🎜한 가지 방법은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제