当前位置: 首页 > 后端技术 > PHP

LaravelExcel的五个隐藏特性

时间:2023-03-29 22:00:24 PHP

LaravelExcel包最近发布了3.0版本,它有一些新特性可以帮助简化高级需求并且非常好用。让我们探索一些您可能不知道的隐藏功能,这些功能使LaravelExcel成为Excel扩展的最佳选择。1、从HTML或Blade导入数据假设已经有一个HTML表格模板代码--resources/views/customers/table.blade.php:名字姓氏电子邮件创建于更新于@foreach($customersas$customer){{$customer->id}}{{$customer->first_name}}{{$customer->last_name}}{{$customer->email}}{{$customer->created_at}}{{$customer->updated_at}}@endforeach你可以用它来重复导入这个表到Excel步骤1.生成一个导出类phpartisanmake:exportCustomersFromView--model=Cstep2.使用FromView操作namespaceApp\Exports;useApp\Customer;useIlluminate\Contracts\View\View;useMaatwebsite\Excel\Concerns\FromView;classCustomersExportViewimplementsFromView{publicfunctionview():View{returnview('customers.table',['customers'=>Customer::orderBy('id','desc')->take(100)->get()]);}}这里是导入的Excel文件:注意:这里只能导出HTML表格,不带任何标签,如html、body、div等*2。导出为PDF、HTML或其他格式文件虽然包名是LaravelExcel,但它提供了多种导出格式,而且使用起来非常简单,只需要在类中再增加一个参数:returnExcel::download(newCustomersExport(),'客户.xlsx','Html');比如会导出成HTML,如下图:样式不多,这里是源码:不仅如此,它还可以导出成PDF,甚至可以从中选择三个库,用法是一样的,你只需要在最后一个参数中指定格式就好了,这里有一些例子。文档示例:注意:必须通过composer安装指定的PDF包,例如:composerrequiredompdf/dompdf导出的PDF如下:*3.按需格式化单元格LaravelExcel有一个强大的“爸爸”——PhpSpreadsheet。因此它具有所有低级功能,包括格式化单元格的各种方式。这是一个如何在LaravelExport类中使用它的示例,例如app/Exports/CustomersExportStyling.php:步骤1.在标头中包含适当的类。使用Maatwebsite\Excel\Concerns\WithEvents;使用Maatwebsite\Excel\Events\AfterSheet;第2步。使用实现部分中的WithEvents接口。classCustomersExportStylingimplementsFromCollection,WithEvents{//...第3步。使用AfterSheet事件创建registerEvents()方法。/***@returnarray*/publicfunctionregisterEvents():array{return[AfterSheet::class=>function(AfterSheet$event){//...在这里你可以设置任何你想要的格式},];}here有一个例子:/***@returnarray*/publicfunctionregisterEvents():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。隐藏模型属性假设我们已经创建了Laravel5.7的默认用户表:现在我们尝试使用一个简单的FromCollection来导出用户表数据:}}导出的Excel中,只能看到如下字段,没有password和remember_token:这是因为在User模型中定义了隐藏字段的属性:classUserextendsAuthenticatable{//.../***这个数组用来定义需要隐藏的字段。**@vararray*/protected$hidden=['password','remember_token',];}所以,这些字段默认是隐藏的,如果想在导出数据的时候不导出某些字段,隐藏属性$hidden可以直接在模型中定义。*5.公式由于某些原因,LaravelExcel包的官方文档中并没有提到公式,但这是Excel的一个重要特性!幸运的是,我们可以直接在导出数??据的类中写公式,我们需要设置单元格的值,像这样:=A2+1或SUM(A1:A10)。其中一种方式是实现WithMapping接口:useApp\Customer;useMaatwebsite\Excel\Concerns\FromCollection;useMaatwebsite\Excel\Concerns\WithMapping;classCustomersExportFormulasimplementsFromCollection,WithMapping{publicfunctioncollection(){returnCustomer::全部();}/***@varCustomer$customer*@returnarray*/publicfunctionmap($customer):array{return[$customer->id,'=A2+1',$customer->first_name,$customer->last_name,$customer->email,];}}这是LaravelExcel的五个鲜为人知的特性。文章转自:https://learnku.com/laravel/t...更多文章:https://learnku.com/laravel/c...