Laravel Excel 패키지 최근 출시된 버전 3.0은 고급 요구 사항을 단순화하는 데 도움이 되는 새로운 기능을 갖추고 있으며 사용성이 매우 뛰어납니다. Laravel Excel을 Excel 확장을 위한 최고의 선택으로 만드는 숨겨진 기능 중 일부를 살펴보겠습니다.
이미 HTML 테이블이 있다고 가정합니다.
템플릿 코드-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('customers.table', [ 'customers' => Customer::orderBy('id', 'desc')->take(100)->get() ]); } }
다음은 가져온 Excel 파일입니다.
참고: 여기에서는 HTML 테이블만 내보낼 수 있습니다. , html, body, div 등과 같은 태그는 사용하지 마세요.
패키지 이름은 Laravel Excel이지만 다양한 내보내기 형식을 제공하며 클래스에 다른 매개변수만 추가하면 됩니다. :
return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');
예를 들어 이렇게 하면 아래와 같이 HTML로 내보내집니다.
소스 코드는 많지 않습니다.
그뿐만 아니라, PDF로 내보낼 수도 있습니다. 세 가지 라이브러리 중에서 선택할 수도 있습니다. 사용 방법은 동일합니다. 다음은 몇 가지 예입니다. 문서 예:
참고: 다음과 같이 지정된 PDF 패키지를 작곡가를 통해 설치해야 합니다.
composer require dompdf/dompdf
내보낸 PDF는 다음과 같습니다.
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); }, ]; }
이 "무작위" 예는 다음과 같은 결과를 보여줍니다.
PhpSpreadsheet 문서의 레시피 페이지에서 위의 모든 내용과 더 많은 예를 찾을 수 있습니다.
Laravel 5.7
의 기본 users
테이블을 생성했다고 가정합니다. Laravel 5.7
默认的users
表:
现在我们尝试用简单的FromCollection
来导出用户表数据:
class UsersExport implements FromCollection { public function collection() { return User::all(); } }
在导出的Excel 里,你只能看到如下字段,但是没有password
和remember_token
:
这是因为在User
模型里定义了隐藏字段的属性:
class User extends Authenticatable { // ... /** * 这个数组用来定义需要隐藏的字段。 * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
所以,默认情况下这些字段是隐藏的,如果你想在导出数据的时候某些字段不被导出的话,可以直接在模型中定义隐藏属性$hidden
。
出于某种原因,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에서는 다음 필드만 볼 수 있으며
🎜이것은 숨겨진 필드 속성이password
및remember_token
은 없습니다.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!