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