使用 PhpSpreadsheet 将 Excel 表格数据导入到数据库

1、安装 PhpSpreadsheet
composer require phpoffice/phpspreadsheet
2、控制器代码
public function importExcel()
{
    // 接收文件
    $file = $_FILES['file']['tmp_name'];
    // 创建读操作
    $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
    // 打开文件、载入excel表格
    $spreadsheet = $reader->load($file);
    // 获取活动工作薄
    $sheet = $spreadsheet->getActiveSheet();

   
    // 获取总行数
    $highestRow = $sheet->getHighestRow();
    
    // 存放插入成功的记录
    $successLog = [];
    // 存放插入失败的记录
    $failLog = [];

    // 从第二行开始读取表格数据,循环写入数据库
    for ($i = 2; $i <= $highestRow; $i++) {
        // 第 1 次循环获取第 3 列 第 2 行单元格的值,第 2 次循环获取第 3 列 第 3 行单元格的值
        $name = $sheet->getCellByColumnAndRow(3,$i)->getValue();
        $age = $sheet->getCellByColumnAndRow(4,$i)->getValue();
        $sex = $sheet->getCellByColumnAndRow(5,$i)->getValue();
        $room = $sheet->getCellByColumnAndRow(6,$i)->getValue();
        // 假设数据表有以下字段
        $data = [
            'name' => $name,
            'age' => $age,
            'sex' => $sex,
            'room_id' => $room,
            'create_time' => date('Y-m-d H:i:s', time())
        ];
        $insert = Db::name('student')->insert($data);
        if ($insert) {
            $successLog[] = '第'.$i.'条,插入成功';
        } else {
            $failLog[] = '第'.$i.'条,插入失败';
        }
    }
    // 将成功数和失败数返回给 ajax
    return json(['success' => count($successLog), 'fail' => count($failLog)]);
}

 

posted @ 2021-01-04 16:02  祈愿仙帝  阅读(491)  评论(0)    收藏  举报