最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Laravel Excel3.0如何导出

来源:懂视网 责编:小采 时间:2020-11-02 18:23:51
文档

Laravel Excel3.0如何导出

Laravel Excel3.0如何导出: 下面由Laravel教程栏目给大家介绍Laravel Excel3.0导出方法,希望对需要的朋友有所帮助!导出方法抽离:<php namespace AppExports; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcel
推荐度:
导读Laravel Excel3.0如何导出: 下面由Laravel教程栏目给大家介绍Laravel Excel3.0导出方法,希望对需要的朋友有所帮助!导出方法抽离:<php namespace AppExports; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcel

下面由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->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');

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Laravel Excel3.0如何导出

Laravel Excel3.0如何导出: 下面由Laravel教程栏目给大家介绍Laravel Excel3.0导出方法,希望对需要的朋友有所帮助!导出方法抽离:<php namespace AppExports; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcel
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top