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);
}