ThinkPHP6如何用PHPExcel进行数据的导入导出

使用composer 安装 PHPExcel

composer require phpoffice/phpexcel

如果在安装phpexcel 出现 composer install 的 404问题 错误

则只需要更新一下composer 就好。更新命令

composer self-update

导入

1-1 准备一个Excel表格

1-2 上代码thinkphp6

    public function excelUpload()
    {
        //接收文件
        $file = $this->request->file('file');
        //获取文件后缀
        $ext = $file->extension();

        //判断时候是限制的文件格式
        $ext_arr = ['xlsx', 'xls', 'csv'];
        if (!in_array($ext, $ext_arr)) {
            $this->error('文件格式有误');
        }
        if ($ext == 'xls') {
            $type = 'Excel5';
        } elseif ($ext == 'xlsx') {
            $type = 'Excel2007';
        } elseif ($ext == 'csv'){
            $type = 'csv';
        }

        // $file->getPathname();上传文件的临时路径
        // 类库 解析excel
        $reader = \PHPExcel_IOFactory::createReader($type);
        $objData = $reader->load($file->getPathname(), $encode = 'utf-8');
        $excel_array = $objData->getsheet(0)->toArray();
      
        //删除表格第一行
        unset($excel_array[0]);
        $i = 0;
        $insertData = [];
         // 将数组重组
         foreach ($excel_array as $key => $value) {
                $insertData[$i]['catid'] = 34;
                $insertData[$i]['createtime'] =  time();;
                $insertData[$i]['updatetime'] = time();
                $insertData[$i]['cph'] =$value[0];
                $insertData[$i]['dw'] = $value[1];
                $insertData[$i]['rymc'] = $value[2];
                $insertData[$i]['sfzh'] = $value[3];
                $insertData[$i]['bz'] = $value[4];
                $insertData[$i]['qx'] = $value[5];
                $i++;
          }
          // dump($insertData);
          // exit();
          $result= Db::name('carshop')->data($insertData)->insertAll();;
          if ($result === false) {
              $this->error('导入失败!');
          }
          $this->success('导入成功!');
    }

2.导出
2-1 编写导出的PHP代码

    public function index()
    {
        $file_name = date('Ymd_His') . '_' . rand(1111, 9999);
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->getActiveSheet()->setTitle("demo"); //给当前活动sheet设置名称
        $res = new Users();
        $result = $res->getExcecl(); //这里是查数据,就不一一写了。[懒惰]
        // 设置头信息
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1','ID')
            ->setCellValue('B1','名称')
            ->setCellValue('C1','密码')
            ->setCellValue('D1','创建时间')
            ->setCellValue('E1','修改时间')
            ->setCellValue('F1','删除时间')
            ->setCellValue('G1','状态');
        $num = 2;

        foreach ($result as $k => $v) {
            $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A' . $num, $v['id'])  //这里是对应数据库字段名
                ->setCellValue('B' . $num, $v['name'])
                ->setCellValue('C' . $num, $v['pass'])
                ->setCellValue('D' . $num, $v['create_time'])
                ->setCellValue('E' . $num, $v['update_time'])
                ->setCellValue('F' . $num, $v['delete_time'])
                ->setCellValue('G' . $num, $v['status']);
            $num++;
        }
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=".$file_name.".xls");
        header('Cache-Control: max-age=0');
        header('Cache-Control: max-age=1');
        header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
        header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header ('Pragma: public'); // HTTP/1.0
        $objWriter->save("php://output");//输出文件

    }

注意
compser安装phpexcle之后,composer里会自动引入下载模块的命名空间,composer下的相关文件都会改变,并不是简单的将phpoffice文件下载放入vender,就直接可以使用 use PHPExcel; 引入PHPExcel类,只有通过composer安装的phpoffice ,才能直接通过 use PHPExcel引入PHPExcel类

好了 TP6的PHPExcel导入导出就是这么简单,希望对小伙伴们有所帮助_

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容