记录一下使用PHPExce + laravel 上传导入数据步骤

/**
     * @param Request $request
     * @return mixed
     * @time 2018/08/10 11:19:00
     * @author wenbin
     */
    public function exportUser(Request $request)
    {
        // 接收上传文件
        $upload_file = $request->file('file');
        // 获取上传文件类型
        $upload_file_type = $upload_file->getClientMimeType();
        // 允许上传的文件类型
        $allowed_type = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
        // 判断是否是允许的类型
        if (!in_array(strtolower($upload_file_type), $allowed_type)) {
            return output_error('请选择正确格式的excel文件!');
        }

        $file_name = $upload_file->path();
        $file_type = \PHPExcel_IOFactory::identify($file_name);
        $obj_reader = \PHPExcel_IOFactory::createReader($file_type);
        $excel = $obj_reader->load($file_name);

        // 读取第一个sheet
        $sheet = $excel->getSheet(0);
        // 获取表格行数
        $all_row = $sheet->getHighestDataRow();
        // 获取表格列数
        $all_column = $sheet->getHighestColumn();

        // 读取每一个表格数据
        $first_column = ['A' => 'open_id', 'B' => 'nick_name', 'C' => 'head_image', 'D' => 'like_score'];
        $cell_values = [];
        for ($i = 2; $i <= $all_row; $i++) {
            for ($j = 'A'; $j <= $all_column; $j++) {
                $address = $j . $i;
                $cell_values[$i][$first_column[$j]] = $sheet->getCell($address)->getValue();
            }
        }

        // 写入数据库
        $res = ActivityLikeScore::importLikeUser($cell_values);
        if ($res) {
            return output_data(['msg' => '导入成功!']);
        }

        return output_error('导入失败!');

    }

最后一步插入数据时可以使用分批插入

猜你喜欢

转载自blog.csdn.net/venn0425/article/details/81805442
今日推荐