亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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