Laravel Excel3.0如何导出

2022-05-15 0 1,016

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

导出方法抽离:

<?phpnamespace 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');

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

【声明:根据2013年1月30日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件!】
本站所有源码尽量保证原汁原味,如有特殊情况会作出声明及标注,网站资源不做任何二次加密(原版加密除外,不影响程序使用的不会做解密处理),方便您更好的学习参考。 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

即刻码站__国内靠谱的站长资源下载平台 php教程 Laravel Excel3.0如何导出 https://www.jike1995.com/35903.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务