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 BladeAnggapkan sudah ada jadual HTML
![Adakah anda tahu lima fungsi Laravel Excel ini?](https://img.php.cn/upload/article/000/000/020/b5905b2d7f72df82826482f9b42fb528-1.png)
Kod templat--resources/views/ customers/table.blade.php:
|
First name |
Last name |
Email |
Created at |
Updated at |
@foreach ($customers as $customer)
{{ $customer->id }} |
{{ $customer->first_name }} |
{{ $customer->last_name }} |
{{ $customer->email }} |
{{ $customer->created_at }} |
{{ $customer->updated_at }} |
@endforeach
Anda boleh menggunakannya untuk berulang kali mengimport jadual ini ke dalam ExcelLangkah 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?](https://img.php.cn/upload/article/000/000/020/b5905b2d7f72df82826482f9b42fb528-2.png)
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:
Tidak terlalu banyak gaya, berikut ialah kod sumber:
![Adakah anda tahu lima fungsi Laravel Excel ini?](https://img.php.cn/upload/article/000/000/020/9bf8fc96fa2b4d686b08e7ecc48cf148-4.png)
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?](https://img.php.cn/upload/article/000/000/020/9bf8fc96fa2b4d686b08e7ecc48cf148-5.png)
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?](https://img.php.cn/upload/article/000/000/020/3720f31ea7a02e534b37b357c537832c-6.png)
3. Format sel mengikut keperluanLaravel 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?](https://img.php.cn/upload/article/000/000/020/3720f31ea7a02e534b37b357c537832c-7.png)
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?](https://img.php.cn/upload/article/000/000/020/3720f31ea7a02e534b37b357c537832c-8.png)
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?](https://img.php.cn/upload/article/000/000/020/e3c4066701c77158ea201013f8662e86-9.png)
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!