tp6 导入excel文件

tp6导入excel文件使用phpoffice

使用composer安装office:composer require phpoffice/phpspreadsheet 

安装成功后项目的composer.json可以看到

导入excel文件:

public function importData()
    {
        // 获取表单上传文件
        $file[] = request()->file('file');
        $savename = \think\facade\Filesystem::putFile('file', $file[0]);
        $fileExtendName = substr(strrchr($savename, '.'), 1);
        // 有Xls和Xlsx格式两种
        if ($fileExtendName == 'xlsx') {
            $objReader = IOFactory::createReader('Xlsx');
        } else {
            $objReader = IOFactory::createReader('Xls');
        }
        $objReader->setReadDataOnly(TRUE);
        // 读取文件,tp6默认上传的文件,在runtime的相应目录下,可根据实际情况自己更改

        $objPHPExcel = $objReader->load(root_path() . '/runtime/storage/' . $savename);
        $sheet = $objPHPExcel->getSheet(0);   //excel中的第一张sheet

        $highestRow = $sheet->getHighestRow();       // 取得总行数
        $highestColumn = $sheet->getHighestColumn();   // 取得总列数
        \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
        $lines = $highestRow - 1;
        if ($lines <= 0) {
            return json(['code' => 0, 'message' => '保存失败']);
        }
        $data = array();
        for ($j = 2; $j <= $highestRow; $j++) {
            $data[$j - 2] = [
              'id' => trim($objPHPExcel->getActiveSheet()->getCell("A" . $j)->getValue()),
              'title' => trim($objPHPExcel->getActiveSheet()->getCell("B" . $j)->getValue()),
           ];
        }
        $rt = Db::name('excel')->insert($data);
        
        if ($rt !== false) {
            return json(['code' => 20000, 'message' => '导入成功']);
        } else {
            return json(['code' => 0, 'message' => '导入失败']);
        }
    }

你可能感兴趣的:(thinkphp6)