Rumah > rangka kerja php > Laravel > teks badan

Adakah anda tahu lima fungsi Laravel Excel ini?

藏色散人
Lepaskan: 2021-12-16 15:11:49
ke hadapan
4227 orang telah melayarinya
Pakej Laravel Excel baru-baru ini mengeluarkan versi 3.0 Ia mempunyai ciri baharu yang boleh membantu memudahkan permintaan peringkat tinggi dan ketersediaan tinggi. Mari terokai beberapa ciri tersembunyi yang mungkin anda tidak tahu yang menjadikan Laravel Excel pilihan terbaik untuk sambungan Excel.

1. Import data daripada HTML atau Blade

Anggapkan sudah ada jadual HTML

Adakah anda tahu lima fungsi Laravel Excel ini?

Kod templat--resources/views/ customers/table.blade.php:

Salin selepas log masuk
                                                                                   @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 }}
Anda boleh menggunakannya untuk berulang kali mengimport jadual ini ke dalam Excel

Langkah 1. Jana kelas Eksport

php artisan make:export CustomersFromView --model=Customer
Salin selepas log masuk
Langkah 2. Gunakan FromView untuk mengendalikan

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()
        ]);
    }
}
Salin selepas log masuk
Berikut ialah fail Excel yang diimport:

Adakah anda tahu lima fungsi Laravel Excel ini?

Nota: Hanya jadual HTML boleh dieksport di sini dan tidak boleh mempunyai sebarang Teg, seperti html, badan, p, dsb.


2 Eksport ke PDF, HTML atau fail format lain

Walaupun nama pakej ialah Laravel Excel, ia menyediakan pelbagai format eksport dan sangat mudah digunakan. . , cuma tambah parameter lain pada kelas:

return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');
Salin selepas log masuk
Sebagai contoh, jika anda melakukan ini, ia akan dieksport ke HTML, seperti yang ditunjukkan di bawah:

Adakah anda tahu lima fungsi Laravel Excel ini?

Tidak terlalu banyak gaya, berikut ialah kod sumber:

Adakah anda tahu lima fungsi Laravel Excel ini?

Bukan itu sahaja, ia juga boleh mengeksport ke PDF, malah anda boleh memilih tiga perpustakaan daripada itu, dan kaedah penggunaan adalah sama, anda hanya perlu menentukan format dalam parameter terakhir. Berikut adalah beberapa contoh. Contoh dokumen:

Adakah anda tahu lima fungsi Laravel Excel ini?

Nota: Anda mesti memasang pakej PDF yang ditentukan melalui komposer, contohnya:

composer require dompdf/dompdf
Salin selepas log masuk
PDF yang dieksport adalah seperti berikut:

Adakah anda tahu lima fungsi Laravel Excel ini?


3. Format sel mengikut keperluan

Laravel Excel mempunyai "bapa" yang berkuasa - PhpSpreadsheet. Jadi ia mempunyai pelbagai fungsi asasnya, termasuk pelbagai cara pemformatan sel.

Berikut ialah contoh cara menggunakannya dalam kelas Eksport Laravel, seperti app/Exports/CustomersExportStyling.php:

Langkah 1. Perkenalkan kelas yang sesuai dalam pengepala.

use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
Salin selepas log masuk
Langkah 2. Gunakan antara muka WithEvents dalam bahagian pelaksanaan.

class CustomersExportStyling implements FromCollection, WithEvents
{
    // ...
Salin selepas log masuk
Langkah 3. Gunakan acara AfterSheet untuk mencipta kaedah registerEvents().

/**
 * @return array
 */
public function registerEvents(): array
{
    return [
        AfterSheet::class    => function(AfterSheet $event) {
            // ... 此处你可以任意格式化
        },
    ];
}
Salin selepas log masuk
Berikut ialah contoh:

/**
 * @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);
        },
    ];
}
Salin selepas log masuk
Keputusan contoh "rawak" ini ditunjukkan di bawah:

Adakah anda tahu lima fungsi Laravel Excel ini?

Anda boleh menemui semua contoh di atas dan lebih banyak lagi dalam halaman Resipi dokumen PhpSpreadsheet.


4. Atribut model tersembunyi

Andaikan kami telah mencipta jadual

lalai Laravel 5.7: users

Adakah anda tahu lima fungsi Laravel Excel ini?

Sekarang kami cuba menggunakan

mudah untuk mengeksport data jadual pengguna: FromCollection

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}
Salin selepas log masuk
Dalam Excel yang dieksport, anda hanya boleh melihat medan berikut, tetapi tiada

dan password: remember_token

Adakah anda tahu lima fungsi Laravel Excel ini?

Ini kerana sifat medan tersembunyi ditakrifkan dalam model

: User

class User extends Authenticatable
{
    // ...

    /**
     * 这个数组用来定义需要隐藏的字段。
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}
Salin selepas log masuk
Jadi, medan ini disembunyikan secara lalai Jika anda mahu medan tertentu tidak dieksport semasa mengeksport data, anda boleh terus mentakrifkan atribut tersembunyi

dalam model. $hidden


5. Rumus

Atas sebab tertentu, formula tidak disebut dalam dokumentasi rasmi pakej Laravel Excel, tetapi ini adalah ciri penting Excel!

Nasib baik, kita boleh menulis formula terus dalam kelas yang mengeksport data Kita perlu menetapkan nilai

, seperti ini: cell. =A2 1 or SUM(A1:A10)

Salah satu caranya ialah dengan melaksanakan antara muka

: WithMapping

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,
        ];
    }
}
Salin selepas log masuk
Di atas ialah lima fungsi Laravel Excel yang kurang diketahui.

Jika anda ingin mengetahui lebih lanjut, saya mempunyai satu set tutorial dalam talian tentang Eksport/Import Excel dalam Laravel, sila lihat!

Alamat asal: https://laravel-news.com/five-hidden-features-of-the-laravel-excel-package

Alamat terjemahan: https://learnku.com /laravel/t/24161

Atas ialah kandungan terperinci Adakah anda tahu lima fungsi Laravel Excel ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan