最近做的一個H5網站 有一個後臺批量錄入資訊列表的功能,上網搜尋了一下,發現了maatwebsite/excel 依賴,在此說明一下具體的實現流程。
1.安裝
值得一提的是本人使用的是laravel 5.5版本,在安裝依賴的時候一定注意要加上版本號2.1。因為最新版本在5.5上面會有報錯提示。
a.在根目錄安裝依賴composer require "maatwebsite/excel:~2.1.0"
b.在config/app.php中註冊服務提供者到providers陣列:Maatwebsite\Excel\ExcelServiceProvider::class,
c.在config/app.php中註冊到aliases陣列:'Excel' => Maatwebsite\Excel\Facades\Excel::class,
d.生成Laravel Excel的配置檔案:php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
2.實現
因為我後臺使用的是layui框架,自帶一鍵匯出功能,所以在只說一下excel的匯入功能。以本人的程式碼為例。
//批量匯入
use Excel;
public function import(Request $req){
try {
//獲取上傳的excel檔案
$filePath = $req->get('report');
Excel::load($filePath, function($reader) {
$data = $reader->all();
//批量儲存
$value=[];
$count = '';
foreach ($data as $k => $v ){
$count++;
//儲存表格每行的值
$value['value1']=$v['行1'];
$value['value2']=$v['行2'];
$value['value3']=$v['行3'];
$value['value4']=$v['行4'];
$value['value5']=$v['行5'];
Adver::create($value);
}
//返回匯入結果
throw new Exception("成功匯入了".$count."條資料");
});
}catch(Exception $e){
return $this->doFailure($e);
}
}
以上就是在laravel框架實現,批量匯入excel並存入資料庫的實現方式。
3.匯出Excel(補充)
首先建立路由:
` Route::get('/admin/export','Admin\AdverController@export');`
以本人的程式碼為例,以下是具體的實現流程:
```
//一鍵匯出
public function export(Request $req){
try {
ini_set('memory_limit','500M');
//設定超時限制為0分鐘
set_time_limit(0);
//獲取資料庫資料
$cellData = P_rank::select('user_name','t_all','all_time')->orderBy('t_all', 'DESC')->orderBy('all_time', 'ASC')->get()->toArray();
//整合資料
$cellData[0] = array('暱稱','總答題數','總答題時間');
for($i=0;$i<count($cellData);$i++){
$cellData[$i] = array_values($cellData[$i]);
$cellData[$i][0] = str_replace('=',' '.'=',$cellData[$i][0]);
}
//輸出excel
Excel::create('排行榜資訊',function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->export('xls');
die;
}catch(Exception $e){
return $this->doFailure($e);
}
}
```
本作品採用《CC 協議》,轉載必須註明作者和本文連結