Laravel- 后台批量导入 Excel
最近做的一个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 协议》,转载必须注明作者和本文链接
推荐文章: