Hướng dẫn with mapping laravel excel - với ánh xạ laravel excel

# Ánh xạ hàng

Bằng cách thêm WithMapping, bạn ánh xạ dữ liệu cần được thêm làm hàng.Bằng cách này, bạn có quyền kiểm soát nguồn thực tế cho mỗi cột.Trong trường hợp sử dụng trình xây dựng truy vấn hùng hồn:


use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;

class InvoicesExport implements FromQuery, WithMapping
{    
    /**
    * @var Invoice $invoice
    */
    public function map($invoice): array
    {
        return [
            $invoice->invoice_number,
            $invoice->user->name,
            Date::dateTimeToExcel($invoice->created_at),
        ];
    }
}

123456789101112131415161718
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# Nhiều hàng

Bạn cũng có thể trả về nhiều hàng bên trong hàm bản đồ:


use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;

class InvoicesExport implements FromQuery, WithMapping
{    
    /**
    * @var Invoice $invoice
    */
    public function map($invoice): array
    {
        // This example will return 3 rows.
        // First row will have 2 column, the next 2 will have 1 column
        return [
            [
                $invoice->invoice_number,
                Date::dateTimeToExcel($invoice->created_at),
            ],
            [
                $invoice->lines->first()->description,
            ],
            [
                $invoice->lines->last()->description,
            ]
        ];
    }
}

123456789101112131415161718192021222324252627
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# Thêm một hàng tiêu đề

Một hàng tiêu đề có thể dễ dàng được thêm vào bằng cách thêm mối quan tâm WithHeadings.Hàng tiêu đề sẽ được thêm vào dưới dạng hàng đầu tiên của trang tính.


use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;

class InvoicesExport implements FromQuery, WithHeadings
{   
    public function headings(): array
    {
        return [
            '#',
            'User',
            'Date',
        ];
    }
}

123456789101112131415
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Nếu bạn cần có nhiều hàng tiêu đề, bạn có thể trả lại nhiều hàng từ phương thức headings():


use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;

class InvoicesExport implements FromQuery, WithHeadings
{   
    public function headings(): array
    {
        return [
           ['First row', 'First row'],
           ['Second row', 'Second row'],
        ];
    }
}

1234567891011121314
2
3
4
5
6
7
8
9
10
11
12
13
14

# Chuẩn bị hàng

Nếu bạn cần chuẩn bị các hàng trước khi thêm các hàng này vào tờ, bạn có thể thêm Phương thức prepareRows vào lớp Xuất của mình.Phương thức này sẽ được gọi trước khi làm phẳng đầu ra truy vấn và gọi map().


use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;

class UsersExport implements FromQuery, WithHeadings
{   
    public function prepareRows($rows)
    {
        return $rows->transform(function ($user) {
            $user->name .= ' (prepared)';

            return $user;
        });
    }
}

123456789101112131415
2
3
4
5
6
7
8
9
10
11
12
13
14
15