先来看效果图

还算是漂亮吧 哈哈哈。

第一步当然是安装包咯

环境要求

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接口让你的表格大小自适应,不是特别重要,但是用了会好点。

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

里面我找到最好用的还是垂直居中和水平居中的方法了。让表单瞬间好看很多,犹豫我们继承了自适应,所以一般也用不到设置列宽啊行高这类的。

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

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

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

直接上代码

<?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;
}
}

sheets方法里面返回的数组就是个多表单。

接下来就是单个表单的事,都和上面的一样。

本文属于个人原创,欢迎转载,转载请附链接:https://www.cnblogs.com/x-x-j/p/12118608.html

用laravel Maatwebsite\Excel 教你导出漂亮的Excel表单的更多相关文章

  1. 导出excel用ajax不行,提交form表单可以

    导出excel用ajax不行,提交form表单可以. 一直用ajax找原因,网页不出现下载提示框 写了 response.setContentType("application/binary ...

  2. 一个漂亮的js表单验证页面+验证码

    一个漂亮的js表单验证页面 见图知其意, 主要特性 带密码安全系数的判断 其他的就没有啥啦 嘿嘿嘿 当然,其代码也在Github上 我也准备了一套可以直接Ctrl + v; Ctrl + c 运行的代 ...

  3. Excel VBA ——如何导出数据到excel表格

    sub OutPut() Dim FileTitle, MyPath, MyFullName As String Application.ScreenUpdating = false '关闭表格公式的 ...

  4. java代码导出数据到Excel、js导出数据到Excel(三)

     jsp内容忽略,仅写个出发按钮:          <button style="width: 100px" onclick="expertExcel()&quo ...

  5. 数据表格,查询、导出共用一个form表单,实现文件流方式下载

    在开发中遇到问题是这样的: 在维护老的管理系统的过程中,老板说让加导出功能:项目中,查询的筛选条件是用的表单提交的方式写的. 解决方案有两种: 一.用ajax方式导出 var array = $('# ...

  6. Laravel 5 基础(十一)- 子视图和表单复用

    我们需要处理编辑文章的问题.当然我们可以手工添加新的路由,就像这样: Route::get('/articles/{id}/edit', 'ArticleController@edit'); 让我们在 ...

  7. Laravel小项目之第4节 Laravel-通过表单实现新增及操作状态提示功能

    第4节 Laravel-通过表单实现新增及操作状态提示功能 4.1 显示新增表单视图 4.2 通过模型实现新增 4.3 操作状态提示 4.1 显示新增表单视图 修改边栏的链接 \resources\v ...

  8. POI操作Excel(批量导出数据/下载excel)

    目录 1.第一个demo:创建工作簿,创建sheet页,创建单元格    2.创建一个时间格式的单元格    3.遍历工作簿的行和列并获取单元格内容    4.文本提取    5.单元格对齐方式    ...

  9. Export GridView Data to Excel. 从GridView导出数据到Excel的奇怪问题解析

    GridView导出函数内容如下 string attachment = "attachment; filename=Contacts.xls";            Respo ...

随机推荐

  1. Win网络安全审计

    目录 Win进程通信 netstat -nb TCPView 审计登陆历史 security日志 WinLogOnView Win进程通信 netstat -nb 用这个命令就能看到进程和外部的IP连 ...

  2. tcpdump后台抓包并输出给wireshark

    # 先进到/tmp 目录执行,方便Filezila 传输 # 开启抓包 nohup tcpdump -i eth0 -s0 -nnA 'port 22' -w dump22.pcap & [1 ...

  3. Codeforces (ccpc-wannafly camp day2) L. Por Costel and the Semipalindromes

    题目链接:http://codeforces.com/gym/100923/problem/L 分析:题目要求序列首尾相同,在此基础上的字典序第k个:因为只存在a,b所以我们把它等效成0和1的话,字典 ...

  4. 树莓派4b通过外接ssd硬盘启动系统失败的排查和解决

    树莓派4b通过外接ssd硬盘启动系统失败,症状: 屏幕卡在黑屏或提示 mmc1:Controller never released inhibit bit(s).... 先说如何设置硬盘启动,后面是解 ...

  5. IDEA中便捷内存数据库H2的最简使用方式

    在IDEA中有时候为了练习,需要使用到数据库,但如果自己工作或开发机子上本来没有安装数据库,也没有可用的远程数据库时,我们可以直接在IDEA环境上使用便捷式的内存数据库H2,关于H2更多知识就自己去找 ...

  6. Springboot 轻量替代框架 Solon 1.3.10 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  7. RocketMQ安装配置过程

    官网 官方网站:http://rocketmq.apache.org 下载源码包:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.8.0/r ...

  8. [源码分析] 消息队列 Kombu 之 Consumer

    [源码分析] 消息队列 Kombu 之 Consumer 目录 [源码分析] 消息队列 Kombu 之 Consumer 0x00 摘要 0x01 综述功能 0x02 示例代码 0x03 定义 3.1 ...

  9. 基于ABP框架的SignalR,使用Winform程序进行功能测试

    在ABP框架里面,默认会带入SignalR消息处理技术,它同时也是ABP框架里面实时消息处理.事件/通知处理的一个实现方式,SignalR消息处理本身就是一个实时很好的处理方案,我在之前在我的Winf ...

  10. [SNOI2019] 通信

    一.题目 点此看题 二.解法 一看就是傻逼补流模型,不会真的有人这个图都建不出来吧 别走啊,我不阴阳怪气了,如果你不知道怎么建这里有图嘛(思路来源是餐巾计划问题): 其中标红的边数量级很大,因为 \( ...