下面由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如何导出
—–文章转载自PHP中文网如有侵权请联系admin#tyuanma.cn删除
关于Go SQL中的Query、Exec和Prepare使用对比(附网络抓包)
转载请注明来源:Laravel Excel3.0如何导出_编程技术_编程开发技术教程
本文永久链接地址:https://www.ymkuzhan.com/952.html
本文永久链接地址:https://www.ymkuzhan.com/952.html
下载声明:
本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压; 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版! 版权声明:
下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。 免责声明:
您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!


