当前位置:首页 > Web开发 > 正文

都和上面的一样

2024-03-31 Web开发

先来看效果图

技术图片

还算是标致吧 哈哈哈。

第一步固然是安置包咯

环境要求

PHP: ^7.0
Laravel: ^5.5

composer require maatwebsite/excel

目前3.1 只撑持 Laravel 5.5 以上,所以会自动注册

颁布配置文件:

php artisan vendor:publish

好了 就这么简单。

接下来就是使用啦。

excel 导出

代码尽量做到解耦,所以导入导出的代码不要和本来的业务耦合。我们新建一个UserExport

php artisan make:export UsersExport --model=User

. ├── app │ ├── Exports │ │ ├── UsersExport.php │ └── composer.json

UserExport的代码

<?php namespace App\Exports; use App\User; use Maatwebsite\Excel\Concerns\FromCollection; class UsersExport implements FromCollection { public function collection() { return User::all(); } }

业务控制器中的挪用

public function export() { return Excel::download(new UsersExport, ‘users.xlsx‘); }

这样最简单的导出就好了。

接下来我们聊一聊美化的对象。

首先我们创建一个基类BaseExport,子类直接担任就可以了,从而不用反复写。

这是我的BaseExport代码

<?php namespace App\Exports; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Concerns\WithStrictNullComparison; use Maatwebsite\Excel\Events\AfterSheet; class BaseExport implements WithEvents, WithStrictNullComparison, ShouldAutoSize { /** * 注册事件 * @return array */ public function registerEvents(): array { return [ AfterSheet::class => function (AfterSheet $event) { //设置作者 $event->writer->setCreator(‘寞小陌‘);//writer属性此刻仿佛有点问题。。。 //设置列宽 $event->sheet->getDelegate()->getColumnDimension(‘A‘)->setWidth(50); //设置区域单元格垂直居中 $event->sheet->getDelegate()->getStyle(‘A1:Z1265‘)->getAlignment()->setVertical(‘center‘); //设置区域单元格程度居中 $event->sheet->getDelegate()->getStyle(‘A1:Z1265‘)->getAlignment()->setHorizontal(‘center‘); //设置区域单元格字体、颜色、配景等,其他设置请检察 applyFromArray 要领,,供给了注释 $event->sheet->getDelegate()->getStyle(‘A1:Z1‘)->applyFromArray([ ‘font‘ => [ ‘name‘ => ‘Arial‘, ‘bold‘ => true, ‘italic‘ => false, ‘strikethrough‘ => false, ‘color‘ => [ ‘rgb‘ => ‘FFFFFF‘ ] ], ‘fill‘ => [ ‘fillType‘ => ‘linear‘, //线性填充,类似渐变 ‘rotation‘ => 45, //渐变角度 ‘startColor‘ => [ ‘rgb‘ => ‘54AE54‘ //初始颜色 ], //结束颜色,如果需要单一配景色,请和初始颜色连结一致 ‘endColor‘ => [ ‘argb‘ => ‘54AE54‘ ] ] ]);
          //合并单元格
          $event->sheet->getDelegate()->mergeCells(‘A1:B1‘); } ]; } }

最重要的就是WithEvents接口了,但是我们先说说WithStrictNullComparison这个接口,担任了这个接口能让你丢掉的0全部给你补回来哈哈哈。

ShouldAutoSize接口让你的表格巨细自适应,不是出格重要,但是用了会好点。

接下来再来说说第一个接口。

里面我找到最好用的还是垂直居中和程度居中的要领了。让表单瞬间都雅很多,踌躇我们担任了自适应,所以一般也用不到设置列宽啊行高这类的。

然后设置区域内单元格的字体、颜色、配景等。我喜欢把标题加个配景色,这样能让数据和标题有个明显的区分。看起来也对照舒服。

具体看代码里的备注吧,还是对照清楚的。

接下来说一声多表单导出的问题。

直接上代码

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32675.html