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

使用composer 安装 PHPExcel

composer require phpoffice/phpexcel

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

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

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

composer self-update

导入

1-1 准备一个Excel表格

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

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导入导出就是这么简单,希望对小伙伴们有所协助_

© 版权声明

相关文章

暂无评论

none
暂无评论...