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 协议》,转载必须注明作者和本文链接
lanffff
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1
xuri

推荐一个功能丰富、兼容性好、高性能的 Excel 文档基础库:github.com/xuri/excelize

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!