Laravel Excel3.0如何导出

                                                       

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

导出方法抽离:

<?php namespace AppExports; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcelConcernsShouldAutoSize; use MaatwebsiteExcelConcernsWithColumnFormatting; use MaatwebsiteExcelConcernsWithCustomValueBinder; use MaatwebsiteExcelConcernsWithEvents; use MaatwebsiteExcelConcernsWithStrictNullComparison; use MaatwebsiteExcelEventsAfterSheet; use PhpOfficePhpSpreadsheetCellStringValueBinder; use PhpOfficePhpSpreadsheetStyleNumberFormat;  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-&gt;row = $row;         $this-&gt;data = $data;         $this-&gt;mergeCell = $mergeCell;         $this-&gt;columnName = $columnName;         $this-&gt;formatNumber = $formatNumber;     }      public function collection()     {         $row = $this-&gt;row;         $data = $this-&gt;data;  //设置表头         foreach ($row[0] as $key =&gt; $value) {             $key_arr[] = $key;         }  //输入数据         foreach ($data as $key =&gt; &amp;$value) {             $js = [];             for ($i=0; $i  $value[ $key_arr[$i] ] ]);             }             array_push($row, $js);             unset($val);         }         return collect($row);     }     public function registerEvents(): array     {         // TODO: Implement registerEvents() method.         if ($this-&gt;mergeCell &amp;&amp; $this-&gt;columnName){             return [                 AfterSheet::class =&gt; function(AfterSheet $event){                     foreach ($this-&gt;columnName as $column){                         foreach ($this-&gt;mergeCell as $key=&gt;$value){                             $event-&gt;sheet-&gt;getDelegate()-&gt;mergeCells($column.$key.':'.$column.$value);                         }                     }                 }             ];         }         return [];     }      public function columnFormats(): array{         $formatNumber = [];         foreach ($this-&gt;formatNumber as $column){             $formatNumber[$column] = NumberFormat::FORMAT_TEXT;         }         return $formatNumber;     } }

使用:

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

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享