Laravel Excel3.0如何导出

互联网 20-9-18

下面由Laravel教程栏目给大家介绍Laravel Excel3.0导出方法,希望对需要的朋友有所帮助!

导出方法抽离:

<?php namespace App\Exports; use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithColumnFormatting; use Maatwebsite\Excel\Concerns\WithCustomValueBinder; use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Concerns\WithStrictNullComparison; use Maatwebsite\Excel\Events\AfterSheet; use PhpOffice\PhpSpreadsheet\Cell\StringValueBinder; use PhpOffice\PhpSpreadsheet\Style\NumberFormat;  class Export extends StringValueBinder implements FromCollection,     ShouldAutoSize,WithColumnFormatting,WithCustomValueBinder,WithStrictNullComparison,WithEvents {     private $row;     private $data;     private $mergeCell;     private $columnName;     private $formatNumber;      /*      * $mergeCell $columnName :合并单元格所需参数;      * $mergeCell 需要合并的位置数组以MAP形式存储 [开始行=>结束行]      * $columnName 需要合并列 与合并行数结合使用ARRAY存储 ['A','B']      */     public function __construct($row,$data,$mergeCell=null,$columnName=null,$formatNumber=[])     {         $this->row = $row;         $this->data = $data;         $this->mergeCell = $mergeCell;         $this->columnName = $columnName;         $this->formatNumber = $formatNumber;     }      public function collection()     {         $row = $this->row;         $data = $this->data;  //设置表头         foreach ($row[0] as $key => $value) {             $key_arr[] = $key;         }  //输入数据         foreach ($data as $key => &$value) {             $js = [];             for ($i=0; $i < count($key_arr); $i++) {                 $js = array_merge($js,[ $key_arr[$i] => $value[ $key_arr[$i] ] ]);             }             array_push($row, $js);             unset($val);         }         return collect($row);     }     public function registerEvents(): array     {         // TODO: Implement registerEvents() method.         if ($this->mergeCell && $this->columnName){             return [                 AfterSheet::class => function(AfterSheet $event){                     foreach ($this->columnName as $column){                         foreach ($this->mergeCell as $key=>$value){                             $event->sheet->getDelegate()->mergeCells($column.$key.':'.$column.$value);                         }                     }                 }             ];         }         return [];     }      public function columnFormats(): array{         $formatNumber = [];         foreach ($this->formatNumber as $column){             $formatNumber[$column] = NumberFormat::FORMAT_TEXT;         }         return $formatNumber;     } }

使用:

/*表头表体都为二维数组*/ $row=[['row1'=>'列1','row2'=>'列2']]; /*与表头key对应,缺少数据报错*/ $list=[['row1'=>'行1列1','row2'=>'行1列2'],['row1'=>'行2列1','row2'=>'行2列2']]; /*将第一行到第三行,第五行到第七行的A,B,C列各自合并*/ $mergeCell=[1=>3,5=>7]; $columnName=["A","B","C"]; /*数字过长的列转换格式防止科学计数*/ $formatNumber=['A','B','C']; //上方A,B,C列都为示意,根据自己需求调整,对应EXCEL的列 return Excel::download(new Export($row,$list,$mergeCell,$columnName,$formatNumber),'fileName');

以上就是Laravel Excel3.0如何导出的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: laravel教程
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:把laravel开发中常用class的整合成一个包,避免每次重复复制粘贴

相关资讯