>PHP 프레임워크 >Laravel >Laravel Excel의 5가지 기능을 알고 계시나요?

Laravel Excel의 5가지 기능을 알고 계시나요?

藏色散人
藏色散人앞으로
2021-12-10 16:32:414265검색

1. HTML 또는 Blade에서 데이터 가져오기

HTML 테이블이 이미 있다고 가정합니다.

Laravel Excel의 5가지 기능을 알고 계시나요?템플릿 코드-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 }}

이를 사용하여 가져오기 이 테이블을 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, p 등과 같은 태그를 가질 수 없습니다.

2. PDF, HTML 또는 기타 형식의 파일로 내보내기

패키지 이름은 Laravel Excel이지만 다양한 내보내기 형식을 제공하며 클래스에 다른 매개변수만 추가하면 됩니다. :

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

예를 들어 이렇게 하면 아래와 같이 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 = '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.7의 기본 users 테이블을 생성했다고 가정합니다.

Laravel Excel의 5가지 기능을 알고 계시나요?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 = [
        'password', 'remember_token',
    ];
}

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


5. 公式

出于某种原因,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에서는 다음 필드만 볼 수 있으며 passwordremember_token은 없습니다.

Laravel Excel의 5가지 기능을 알고 계시나요?🎜🎜이것은 숨겨진 필드 속성이 User 모델에 정의되어 있기 때문입니다. 🎜rrreee 🎜따라서 이러한 필드는 기본적으로 숨겨져 있습니다. 데이터를 내보낼 때 일부 필드를 내보내지 않으려면 모델에서 숨겨진 속성 $hidden을 직접 정의하면 됩니다. 🎜🎜🎜5. 수식🎜🎜뭔 이유인지 Laravel Excel 패키지의 공식 문서에는 수식이 언급되어 있지 않지만 이는 Excel의 중요한 기능입니다! 🎜🎜다행히도 데이터를 내보내는 클래스에서 직접 수식을 작성할 수 있습니다. =A2+1 또는 SUM(A1:A10)과 같이 <code>cell의 값을 설정해야 합니다. ). 🎜🎜한 가지 방법은 WithMapping 인터페이스를 구현하는 것입니다. 🎜rrreee🎜위는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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