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 数据的时候需要按照统一的格式,数据入库的时候需要处理数据异常的情况,若出现数据异常则可以直接跳过该行继续执行下一行,直到处理行所有数据为空就停止处理,最终达到导入数据的目的。