laravel8 excel导出

1.安装

composer require maatwebsite/excel

安装后的设置

config/app.php中注册服务提供者到providers数组:

Maatwebsite\Excel\ExcelServiceProvider::class,

同样在config/app.php中注册门面到aliases数组:

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

第二步:使用laravel框架的artisan命令,新建excel导出脚本

php artisan make:export ProjectExport --model=Project

参数:
ProjectExport:脚本名(或者说是新生成的脚本文件名)
--model:引用的model

执行完上面的命令后,会在app/Exports目录下,新建对应的excel导出脚本。

第三步:编写脚本

<?php

namespace App\Exports;

use App\Models\Company;
use Maatwebsite\Excel\Concerns\FromArray;  // 指定使用数组结构
use Maatwebsite\Excel\Concerns\WithMapping; // 设置excel中每列要展示的数据
use Maatwebsite\Excel\Concerns\WithHeadings; // 设置excel的首行对应的表头信息
use Illuminate\Contracts\Support\Responsable;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromCollection;

class CompanyExport implements FromCollection, WithMapping, WithHeadings, Responsable
{
	use Exportable;
    protected $data;
    private $fileName;
     public function __construct(array $data)
    {
        $this->data     = $data; // 实例化该脚本的时候,需要传入要导出的数据
//        $this->fileName = date('YmdHis') . '_Financial_project.xlsx'; // 指定导出的文件名
    }
       /**
     * 将数组转为集合
     * @return \Illuminate\Support\Collection
     */
    public function collection()
    {
        return Company::all();
    }


    public function array(): array // 返回的数据
    {
        return $this->data;
    }

	public function map($value): array // 指定excel中每一列的数据字段
    {
        return [
            $value['id'],
            $value['company'],
            $value['code'],
            $value['types']['name'],
            $value['industry'],
            $value['city']
        ];
    }

	public function headings(): array // 指定excel的表头
    {
        return [
            'id',
            '企业名称',
            '机构代码',
            '企业分类',
            '所属行业',
            '企业分级',

        ];
    }
}
    public function export(Request $request)
    {
          $data=  Company::with('types')->get()->toArray();
         //          dd($data);
        //导出方法
        return Excel::download(new CompanyExport($data), 'users.xlsx');
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值