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 數據的時候需要按照統一的格式,數據入庫的時候需要處理數據異常的情況,若出現數據異常則可以直接跳過該行繼續執行下一行,直到處理行所有數據為空就停止處理,最終達到導入數據的目的。
愛因詩賢 ·
2025 imooc.com All Rights Reserved |