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