Laravel-Excel3.0 使用

james_xue發表於2019-04-09

laravel  excel3.0因為新出來不久,可能很多人沒怎麼使用過,今天跟大家分享一下我使用過程的心得以及踩過的坑,給後邊的開發老鐵們提供少許經驗。

 首先宣告,使用laravel excel3.0,務必確保你的laravel框架版本在5.6以上,PHP版本7.2以上(建議大家使用高版本),不然可能沒法運作。

composer require maatwebsite/excel
'providers' => [   
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
'aliases' => [ 
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
php artisan vendor:publish

建立app/exports/export.php

<?php
namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings; //設定標題
use Maatwebsite\Excel\Concerns\ShouldAutoSize; //自動單元格尺寸
use PhpOffice\PhpSpreadsheet\Style\NumberFormat; //設定單元格資料格式
use Maatwebsite\Excel\Concerns\WithColumnFormatting; //設定列格式
use Maatwebsite\Excel\Concerns\WithStrictNullComparison; //為空時零填充

class InvoicesExport implements FromCollection,WithHeadings,WithStrictNullComparison,WithColumnFormatting,ShouldAutoSize
{
    protected $data;

    protected $header;
    /*
    * Excel類的建構函式
    */
    public function __construct($data, $header)
    {
        $this->data = $data;
        $this->header = $header;
    }

    //匯出資料邏輯
    public function collection()
    {
        return $this->data;
    }
    //首行標題
    public function headings(): array
    {
        return $this->header;
    }
      //設定列格式
    public function columnFormats(): array
    {
        return [
            //'E' => NumberFormat::FORMAT_DATE_XLSX14,
        ];
    }
}

控制器中使用:

public function export(){
    $data = Post::get();
    $header = [ 'ID',
        '姓名',
        '年齡',
        '性別',
        '建立時間',
        '修改時間'];
    return \Excel::download(new InvoicesExport($data, $header), "測試匯出.xls");
}

補充:匯入

<?php
namespace App\Exports;

use Maatwebsite\Excel\Concerns\ToArray;

class Import implements ToArray
{
  //重新父類實現
public function array(array $array){

    return $array;
}

}

控制器使用:

public function import(Request $request){
    $file = $request->file('file');
    $data = \Excel::toArray(new Import(), $file);
    dd($data);
}

不要輕易放棄。學習成長的路上,我們長路漫漫,只因學無止境

Don't give up easily. On the way of learning and growing up, we have a long way to go, just because there is no end to learning.

相關文章