<?php

use Maatwebsite\Excel\Classes\LaravelExcelWorksheet;
use Maatwebsite\Excel\Exceptions\LaravelExcelException;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Writers\CellWriter;
use Maatwebsite\Excel\Writers\LaravelExcelWriter;
use PHPExcel_Exception; trait HandlerExcelTrait
{
/**
* @var array
*/
protected $cellLetter = [
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',
'R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD',
'AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN',
'AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'
]; /**
* $data = Array(
* [0] => Array(
* [0] => 序号
* )
* [1] => Array(
* [id] => 1
* )
* )
* $title = ['测试']
* @param string $fileName
* @param array $title
* @param array $data
* @return mixed
* @throws LaravelExcelException
*/
public function exportExcel(string $fileName, array $title, array $data)
{
try {
return Excel::create($fileName, function ($excel) use ($data, $title) {
/** @var LaravelExcelWriter $excel */
$excel->sheet('sheet', function ($sheet) use ($data, $title) {
/** @var LaravelExcelWorksheet $sheet */
$column = $this->cellLetter[count($data[0]) - 1]; try {
$sheet->fromArray($data, null, 'A1', true, false);
} catch (PHPExcel_Exception $e) {
throw new LaravelExcelException($e->getMessage());
} /** 此为设置整体样式 */
$sheet->setStyle([
'font' => [
'name' => 'Calibri',
'size' => 12,
'bold' => false,
]
])
->prependRow($title)
->row(1, function ($row) {
/** @var CellWriter $row */
$row->setFont(array( //设置标题的样式
'family' => 'Calibri',
'size' => '16',
'bold' => true
));
})
->mergeCells('A1:' . $column . '1')
->cell('A2:' . $column . '2', function ($cells) {
/** @var CellWriter $cells */
$cells->setBackground('#AAAAFF');
})->setHeight(1, 30)
->setAutoFilter('A2:' . $column . '2'); //设置自动过滤 /** 此为针对每行的高宽进行设置 */
for ($i = 2; $i <= count($data[0]) + 1; $i++) {
$sheet->setHeight($i, 20);
$sheet->setWidth($this->cellLetter[$i - 1], 30);
$sheet->row($i - 1, function ($row) {
/** @var CellWriter $row */
$row->setAlignment('center');
$row->setValignment('center');
});
}
});
})->export('xlsx');
} catch (LaravelExcelException $e) {
throw new LaravelExcelException($e->getMessage());
}
}
}

原文:https://learnku.com/articles/7095/laravel-excel-beautification-in-laravel

Laravel 中使用 Laravel-Excel 美化的更多相关文章

  1. Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

    1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该 ...

  2. 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

    1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和 导出  ...

  3. Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    1.简介 本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍吧. Laravel Excel 在 ...

  4. laravel 5.4 导出excel表格

    1.在laravel根目录下面找到一个composer.json文件 打开并在require下面加上一句话,如图所示: 注:以后这个excel的版本号可能还会修改 2.执行 composer inst ...

  5. Laravel中的日志与上传

    PHP中的框架众多,我自己就接触了好几个.大学那会啥也不懂啥也不会,拿了一个ThinkPHP学了.也许有好多人吐槽TP,但是个人感觉不能说哪个框架好,哪个框架不好,再不好的框架你能把源码读上一遍,框架 ...

  6. laravel中日志为daily时如何设置最大保存天数

    在laravel中,日志设置为daily时,默认保存七天的日志,超过则清除七天前的日志.可修改默认的设置,假如要保存30天的日志,则配置如下: 在配置文件config/app.php中添加如下代码: ...

  7. laravel中的错误与日志

    日志 laravel中的日志是基于monolog而封装的.laravel在它上面做了几个事情: 把monolog中的addInfo等函数简化成为了info这样的函数 增加了useFiles和useDa ...

  8. laravel中的$request对象构造及请求生命周期

    laravel应用程序中index.php是所有请求的入口.当用户提交一个form或者访问一个网页时,首先由kernel捕捉到该session PHP运行环境下的用户数据, 生成一个request对象 ...

  9. cron以及在laravel中使用cron

    yum install vixie-cron yum install crontabs /bin/systemctl restart crond.service #启动服务 /bin/systemct ...

  10. Laravel中的队列处理

    Laravel中的队列处理 队列介绍 为什么要有消息队?这里先对其进行一个简单的介绍,方便还不了解的同学理解.在面向对象里,有一个很简单的概念--消息传递,而消息队列就可以在它上面扩展一下,把它说的更 ...

随机推荐

  1. mysql第八课

    开启事务: START TRANSACTION; 提交事务: COMMIT; 回滚事务: ROLLBACK; 事务的概念:原子性,一致性,隔离性,持久性 READ UNCOMMITTED(读了未提交) ...

  2. Linux配置安装

    1.  安装jdk 1.1   卸载:使用java version查看虚拟机是否有jdk环境,存在先卸载: 1.      首先我的系统是CenOS7,安装完成后,先打开终端,切换到管理员账号,命令如 ...

  3. 剑指offer-面试题51-数组中的逆序对-归并排序

    /* 题目: 求给定数组的逆序对数. */ /* 思路: 归并排序. */ #include<iostream> #include<cstring> #include<v ...

  4. 关于Dijk采访的一些感想

    有效的程序员不应该浪费很多时间用于程序调试,他们应该一开始就不要把故障引入! 反复,一遍又一遍的尝试,真的会让人心烦,对于有的问题解决不了,其实有很多原因,写出来的程序其实是非常考验人的细节处理能力的 ...

  5. vitualbox安装centos7卡死

    在用vitualbox安装centos7的时候,每次到配置页面,都会莫名卡死,试了几遍才发现不是卡死,而是弹窗用鼠标点击是没用的,需要用tab键和回车来选中执行.

  6. idea 代码没有被svn控制

    背景 开发从svn上拉下来的代码,上传时发现idea的快捷键(ctrl+T)没反应以及菜单栏中没有相关按钮. 原因 发现项目当前文件夹里没有 .svn 隐藏文件夹,所以当前文件夹就没有被idea识别继 ...

  7. vue中的this.$nextTick()使用

    首先我们来翻译一下nextTick是什么意思:下一个刻度 再来看看vue官网怎么说的: Vue.nextTick( [callback, context] )在下次 DOM 更新循环结束之后执行延迟回 ...

  8. 1级搭建类112-Oracle 19c SI FS(CentOS 8)

    Oracle 19c 单实例文件系统在 CentOS 8 上的静默安装

  9. jQuery---tab栏切换

    tab栏切换 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  10. The sklearn preprocessing

    Recently, I was writing module of feature engineering, i found two excellently packages -- tsfresh a ...