1. HTML 또는 Blade에서 데이터 가져오기
템플릿 코드-resources/views/customers/table.blade.php:
First name | Last name | Created at | Updated 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 파일입니다.
참고: 여기에서는 HTML 테이블만 내보낼 수 있으며 html, body, p 등과 같은 태그를 가질 수 없습니다.
2. PDF, HTML 또는 기타 형식의 파일로 내보내기return Excel::download(new CustomersExport(), 'customers.xlsx', 'Html');
예를 들어 이렇게 하면 아래와 같이 HTML로 내보내집니다.
소스 코드는 많지 않습니다.
그뿐만 아니라, PDF로 내보낼 수도 있습니다. 세 가지 라이브러리 중에서 선택할 수도 있습니다. 사용 방법은 동일합니다. 다음은 몇 가지 예입니다. 문서 예:
참고: 다음과 같이 작곡가를 통해 지정된 PDF 패키지를 설치해야 합니다.
composer require dompdf/dompdf
내보낸 PDF는 다음과 같습니다.
3 필요에 따라 셀 서식을 지정합니다.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 문서의 레시피 페이지에서 찾을 수 있습니다.
4. 숨겨진 모델 속성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, ]; } }
password
및 remember_token
은 없습니다.
🎜🎜이것은 숨겨진 필드 속성이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!