PHP使用maatwebsite/excel~3.1

安装

composer安装

composer require maatwebsite/excel

配置provider

'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

配置aliases

'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]

加载配置:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

使用

3.1版本和以前不一样,底层都是通过Export对象驱动的,所以入口都是自定义的Export类,实例化FromCollection接口,

继承Exportale特性

controller

download('test.xlsx');
    }
}

通过追踪调用发现,最终调用到Sheet类的在类库的Sheet类中,支持以下几种方式导出,只需要在Export中实例化对应的接口即可,比如上面代码中的,class UsersExport implements FromArray

 /**
     * @param FromView $sheetExport
     * @param int|null $sheetIndex
     *
     * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
     */
    public function fromView(FromView $sheetExport, $sheetIndex = null)
    {
        $temporaryFile = $this->temporaryFileFactory->makeLocal();
        $temporaryFile->put($sheetExport->view()->render());

        $spreadsheet = $this->worksheet->getParent();

        /** @var Html $reader */
        $reader = IOFactory::createReader('Html');

        // If no sheetIndex given, insert content into the last sheet
        $reader->setSheetIndex($sheetIndex ?? $spreadsheet->getSheetCount() - 1);
        $reader->loadIntoExisting($temporaryFile->getLocalPath(), $spreadsheet);

        $temporaryFile->delete();
    }

    /**
     * @param FromQuery $sheetExport
     * @param Worksheet $worksheet
     */
    public function fromQuery(FromQuery $sheetExport, Worksheet $worksheet)
    {
        $sheetExport->query()->chunk($this->getChunkSize($sheetExport), function ($chunk) use ($sheetExport, $worksheet) {
            $this->appendRows($chunk, $sheetExport);
        });
    }

    /**
     * @param FromCollection $sheetExport
     */
    public function fromCollection(FromCollection $sheetExport)
    {
        $this->appendRows($sheetExport->collection()->all(), $sheetExport);
    }

    /**
     * @param FromArray $sheetExport
     */
    public function fromArray(FromArray $sheetExport)
    {
        $this->appendRows($sheetExport->array(), $sheetExport);
    }

    /**
     * @param FromIterator $sheetExport
     */
    public function fromIterator(FromIterator $sheetExport)
    {
        $this->appendRows($sheetExport->iterator(), $sheetExport);
    }

日常使用array是最实用的,可以自己任意组合查询返回的数据结构,其他的使用方式可参考文档:https://docs.laravel-excel.com/3.1/exports/custom-csv-settings.html

你可能感兴趣的:(PHP,PHP,Excel,export,导出,表格)