首页 > 服务端语言 > ThinkPHP 入门教程 > Excel 导入学生信息

Excel 导入学生信息

1.前言

有些时候学生信息是按照统一格式记录在 Excel 上的,若有 Excel 导入功能直接将这些信息导入到数据库,就会方便很多,本小节主要介绍一下如何在 ThinkPHP 中使用 phpspreadsheet 三方工具来导入学生信息。

2.phpspreadsheet 简介

phpspreadsheet 是一个用纯 PHP 编写的库,提供了一组类可以读取和写入不同的电子表格文件格式,phpspreadsheet 提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,phpspreadsheet 能用程序实现各种各样的样式的 Excel 表格。

3.安装 phpspreadsheet

使用如下 composer 命令即可开始安装 phpspreadsheet

composer require phpoffice/phpspreadsheet

如下图所示:
图片描述
安装完如下图所示:
图片描述

4.Excel 文件处理

4.1 创建 excel 测试数据文件

为了方便演示,需要先手动创建 excel 文件,文件内容如下图所示:
图片描述

4.2 创建 Excel 文件上传路由

按照之前第 22 小节文件上传的方式新建路由如下:

//文件上传界面
Route::get('file','file/index');

//文件上传
Route::post('upload','file/upload');

4.3 创建 Excel 文件上传处理方法

制器和文件上传界面方法如下:

    public function uploadExcel()
    {
        $data        = $this->request->param();
        $file_url    = "./upload/" . $data['file_url'];
        $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_url);
        $n           = 2;
        while (true) {
            $name      = $spreadsheet->getActiveSheet()->getCell('A' . $n)->getValue();
            $age       = $spreadsheet->getActiveSheet()->getCell('B' . $n)->getValue();
            $id_number = $spreadsheet->getActiveSheet()->getCell('C' . $n)->getValue();
                try {
                    $studentModel             = new StudentModel();
                    $studentModel->name       = $name;
                    $studentModel->age        = $age;
                    $studentModel->id_number  = $id_number;
                    $studentModel->created_at = time();
                    $studentModel->save();
                } catch (\Exception $exception) {

                }
            if(empty($name) && empty($age) && empty($id_number)){
                break;
            }
            $n++;
        }

        return $this->success('导入成功');
    }

5.视频演示

6.小结

本小节介绍了如何使用 phpspreadsheet 导入 excel 中的数据,然后读取数据到 php 中,再将这些数据插入到数据库,需要注意的是在填写 Excel 数据的时候需要按照统一的格式,数据入库的时候需要处理数据异常的情况,若出现数据异常则可以直接跳过该行继续执行下一行,直到处理行所有数据为空就停止处理,最终达到导入数据的目的。

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈