用laravel Maatwebsite\Excel 教你导出漂亮的Excel表单
2021-05-03 23:28
标签:解耦 write register mamicode logs nbsp tor 现在 sid 先来看效果图 还算是漂亮吧 哈哈哈。 第一步当然是安装包咯 PHP: 目前3.1 只支持 Laravel 5.5 以上,所以会自动注册 发布配置文件: 好了 就这么简单。 接下来就是使用啦。 代码尽量做到解耦,所以导入导出的代码不要和原来的业务耦合。我们新建一个UserExport UserExport的代码 业务控制器中的调用 这样最简单的导出就好了。 接下来我们聊一聊美化的东西。 首先我们创建一个基类BaseExport,子类直接继承就可以了,从而不用重复写。 这是我的BaseExport代码 最重要的就是WithEvents接口了,但是我们先说说WithStrictNullComparison这个接口,继承了这个接口能让你丢失的0全部给你补回来哈哈哈。 ShouldAutoSize接口让你的表格大小自适应,不是特别重要,但是用了会好点。 接下来再来说说第一个接口。 里面我找到最好用的还是垂直居中和水平居中的方法了。让表单瞬间好看很多,犹豫我们继承了自适应,所以一般也用不到设置列宽啊行高这类的。 然后设置区域内单元格的字体、颜色、背景等。我喜欢把标题加个背景色,这样能让数据和标题有个明显的区分。看起来也比较舒服。 具体看代码里的备注吧,还是比较清楚的。 接下来说一声多表单导出的问题。 直接上代码 sheets方法里面返回的数组就是个多表单。 接下来就是单个表单的事,都和上面的一样。 用laravel Maatwebsite\Excel 教你导出漂亮的Excel表单 标签:解耦 write register mamicode logs nbsp tor 现在 sid 原文地址:https://www.cnblogs.com/x-x-j/p/12118608.html环境要求
^7.0
Laravel: ^5.5
composer require maatwebsite/excel
php artisan vendor:publish
excel 导出
php artisan make:export UsersExport --model=User
.
├── app
│ ├── Exports
│ │ ├── UsersExport.php
│
└── composer.json
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‘);
}
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‘);} ]; } }
php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class FlatAccountMultipleExport implements WithMultipleSheets
{
private $user;
private $lang;
private $request;
public function __construct($user, $lang, $request)
{
$this->user = $user;
$this->lang = $lang;
$this->request = $request;
}
public function sheets(): array
{
$sheets = [
new FlatAccountExport($this->user, $this->lang, $this->request),
new LendingSubsidiaryExport($this->user, $this->lang, $this->request)
];
return $sheets;
}
}
本文属于个人原创,欢迎转载,转载请附链接:https://www.cnblogs.com/x-x-j/p/12118608.html
文章标题:用laravel Maatwebsite\Excel 教你导出漂亮的Excel表单
文章链接:http://soscw.com/index.php/essay/82014.html