[学习教程] Laravel 中使用 Laravel-Excel 美化

[复制链接]
haoyangtian实名认证 手机认证 视频认证 发表于 2018-8-24 16:46:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
今天分享下laravel中的Maatwebsite/Laravel-Excel简单使用,但是这其实不难的,所以,老鸟勿喷,请继续飞。。。
安装过程就直接看github的就行了,很详细。。。
以下上代码吧,不罗嗦了:
  1. <?php

  2. use Maatwebsite\Excel\Classes\LaravelExcelWorksheet;
  3. use Maatwebsite\Excel\Exceptions\LaravelExcelException;
  4. use Maatwebsite\Excel\Facades\Excel;
  5. use Maatwebsite\Excel\Writers\CellWriter;
  6. use Maatwebsite\Excel\Writers\LaravelExcelWriter;
  7. use PHPExcel_Exception;

  8. trait HandlerExcelTrait
  9. {
  10.     /**
  11.      * @var array
  12.      */
  13.     protected $cellLetter = [
  14.         'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',
  15.         'R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD',
  16.         'AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN',
  17.         'AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'
  18.     ];

  19.     /**
  20.      * $data = Array(
  21.      *  [0] => Array(
  22.      *      [0] => 序号
  23.      *      )
  24.      *  [1] => Array(
  25.      *      [id] => 1
  26.      *      )
  27.      *  )
  28.      * $title = ['测试']
  29.      * @param string $fileName
  30.      * @param array $title
  31.      * @param array $data
  32.      * @return mixed
  33.      * @throws LaravelExcelException
  34.      */
  35.     public function exportExcel(string $fileName, array $title, array $data)
  36.     {
  37.             try {
  38.             return Excel::create($fileName, function ($excel) use ($data, $title) {
  39.                     /** @var LaravelExcelWriter $excel */
  40.                     $excel->sheet('sheet', function ($sheet) use ($data, $title) {
  41.                             /** @var LaravelExcelWorksheet $sheet */
  42.                             $column = $this->cellLetter[count($data[0]) - 1];

  43.                             try {
  44.                                     $sheet->fromArray($data, null, 'A1', true, false);
  45.                             } catch (PHPExcel_Exception $e) {
  46.                                     throw new LaravelExcelException($e->getMessage());
  47.                             }

  48.                 /** 此为设置整体样式 */
  49.                             $sheet->setStyle([
  50.                                     'font' => [
  51.                                             'name' => 'Calibri',
  52.                                             'size' => 12,
  53.                                             'bold' => false,
  54.                                     ]
  55.                             ])
  56.                                 ->prependRow($title)
  57.                                 ->row(1, function ($row) {
  58.                                         /** @var CellWriter $row */
  59.                                         $row->setFont(array(   //设置标题的样式
  60.                                                 'family' => 'Calibri',
  61.                                                 'size' => '16',
  62.                                                 'bold' => true
  63.                                         ));
  64.                                 })
  65.                                 ->mergeCells('A1:' . $column . '1')
  66.                                 ->cell('A2:' . $column . '2', function ($cells) {
  67.                                         /** @var CellWriter $cells */
  68.                                         $cells->setBackground('#AAAAFF');
  69.                                 })->setHeight(1, 30)
  70.                                 ->setAutoFilter('A2:' . $column . '2');  //设置自动过滤

  71.                     /** 此为针对每行的高宽进行设置 */
  72.                         for ($i = 2; $i <= count($data[0]) + 1; $i++) {
  73.                                 $sheet->setHeight($i, 20);
  74.                                 $sheet->setWidth($this->cellLetter[$i - 1], 30);
  75.                                 $sheet->row($i - 1, function ($row) {
  76.                                         /** @var CellWriter $row */
  77.                                         $row->setAlignment('center');
  78.                                         $row->setValignment('center');
  79.                                 });
  80.                         }
  81.                 });
  82.                     })->export('xlsx');
  83.             } catch (LaravelExcelException $e) {
  84.                     throw new LaravelExcelException($e->getMessage());
  85.             }
  86.     }
  87. }
复制代码
设置表格样式
  1. // 设置表格样式
  2. $sheet -> row(1,function($row){
  3.         // 单元格处理方法
  4.         $row ->setBackground('#ff3300'); // 设置单元格背景
  5.         $row ->setFontColor('#ffffff'); // 改变字体颜色
  6.         // 分开设置字体
  7.         /*$row ->setFontSize(18);  // 改变字体大小
  8.         $row ->setFontFamily('Calibri'); // 设置字体
  9.         $row -> setFontWeight('bold'); // 字体设置为粗体*/
  10.         //要改变当前表的字体用:->setFont($array)
  11.         $row ->setFont([
  12.                 'family' => 'Calibri',
  13.                 'size' => '18',
  14.                 'bold' => true
  15.         ]);
  16.         // 设置边框
  17.         // $row -> setBorder('solid','none','none','solid');
  18.         //设置水平对齐
  19.         $row ->setAlignment('center');
  20.         //设置垂直对齐
  21.         $row ->setValignment('middle');
  22. });       
  23. });
  24. // 设置行高
  25. // $sheet->setHeight(1, 110);
  26. // 为多个行设置高度
  27. $sheet->setHeight(array(
  28.         1     =>  50,
  29.         2     =>  25
  30. ));
  31. // 设置所有边框
  32. $sheet->setAllBorders('thin');
  33. // 设置单元格尺寸
  34. $sheet->setSize('A1', 10, 10);
复制代码
插入行
  1. // 在第1行后插入
  2. $sheet->appendRow(1, array(
  3.     '0','1','2','3'
  4. ));
  5. // 插入最后
  6. $sheet->appendRow(array(
  7.     '商品名','价格','库存','备注'
  8. ));
复制代码
添加一行
  1. // 添加到第1行前
  2. $sheet->prependRow(1, array(
  3.     '商品名','价格','库存','备注'
  4. ));
  5. // 添加到最前面
  6. $sheet->prependRow(array(
  7.     '商品名','价格','库存','备注'
  8. ));
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

专注源码分享,教程分享
全国服务电话

187-8198-7163

周一至周8:00-22:00

反馈建议

cdhaoyt@163.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.2© 2001-2013 Comsenz Inc.( 蜀ICP备16032957号-1