先来看效果图

还算是漂亮吧 哈哈哈。

第一步当然是安装包咯

环境要求

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. Markdown(2)基本语法

    ​ Markdown 是一种轻量级标记语言 , 通过简单的标记语法,使文本内容具有一定的格式 . 一.段落 1. 标题 语法格式: 符号 "#" 可以标记 1~6级标题.一级标题对 ...

  2. STM32学习笔记——序言

    写AVR已经两年了.如果初中时候玩Arduino也算的话,就是6年. 两年以来,我用AVR单片机完成了两个大项目: AVR单片机教程,一时兴起写的,效果不好: MEDS,参赛用的课题,半完成,比赛都结 ...

  3. MySQL之四 存储引擎

    1.介绍 存储引擎MySQL中的"文件系统" MySQL体系结构 InnoDB存储引擎介绍 My1SAM 和InnoDB区别  mysql MariaDB [(none)]> ...

  4. apicloud编译所需的ios证书的获取方法

    在我们通过apicloud或hbuilderX这些工具打包ios应用的时候,需要一个ios证书. 那么我们如何生成这个ios证书呢?网上介绍的方法都是需要使用mac电脑,然后用mac电脑的钥匙串访问的 ...

  5. springmvc字符 中文乱码问题

    springmvc字符 中文乱码问题 1.字符过滤器 输入中文测试,发现乱码 以前乱码问题通过过滤器解决 , 而SpringMVC给我们提供了一个过滤器 , 可以在web.xml中配置,修改了xml文 ...

  6. HDOJ-1257(贪心/动态规划)

    最少拦截系统 HDOJ-1257 我做这题的思路就是采用暴力或者贪心.也就是每次循环选出从第一个未被选择的元素开始,依次把后面可以选择的元素作为一个系统.最后统计可以有多少个系统. 还有人的思路就是利 ...

  7. iot漏洞入门

    路由器漏洞入门 下载项目https://github.com/praetorian-inc/DVRF 安装quem sudo apt install qemu-user-static 安装gdb-mu ...

  8. 记录 Allsec 解题过程

    开局打开URL:http://119.3.191.245:65532/#/allsecPlayGame,前去做游戏 游戏URL:http://119.3.191.245:8877/Login.php ...

  9. django框架如何解决跨域问题

    跨域问题的由来 由于浏览器具有同源策略的限制. 限制:在发送Ajax请求时,如果当前浏览器的URL是a.com,页面中向b.com发送Ajax请求,请求可以正常访问,但数据回到浏览器时,浏览器会阻止. ...

  10. WPF 基础 - MultiBinding

    MultiBinding 与 Binding 一样继承自 BindingBase,因此可以使用 Binding 的地方都可以使用 MultiBinding. namespace System.Wind ...