>  기사  >  백엔드 개발  >  Thinkphp5+PHPExcel은 테이블 데이터 일괄 업로드 기능을 실현합니다.

Thinkphp5+PHPExcel은 테이블 데이터 일괄 업로드 기능을 실현합니다.

不言
不言원래의
2018-05-03 16:13:311688검색

이번 글에서는 Thinkphp5+PHPExcel을 이용한 테이블 데이터 일괄 업로드 기능을 주로 소개합니다. 필요하신 분들은 참고하시면 됩니다

1 먼저 PHPExcel을 다운받아서 Vendor 폴더에 넣어주세요. /, 다운로드한 PHPExcel 파일을 여기에 넣으세요

2. 프론트엔드 코드

<!DOCTYPE html>
<html>
<head>
  <title>批量导入数据</title>
</head>
<body>
<form action="{:url(&#39;/index/index/importExcel&#39;)}" method="post" enctype="multipart/form-data">
  <input type="file" name="myfile"><br/>
  <input type="submit" value="批量的导入">
</form>
</body>
</html>

3. 백엔드 코드

/**
  * 导入表格数据
  * 先把文件上传到服务器,然后再读取数据存到数据库
  */
  public function importExcel(){
    header("content-type:text/html;charset=utf-8");
    //上传excel文件
    $file = request()->file(&#39;myfile&#39;);
    //移到/public/uploads/excel/下
    $info = $file->move(ROOT_PATH.&#39;public&#39;.DS.&#39;uploads&#39;.DS.&#39;excel&#39;);
    //上传文件成功
    if ($info) {
      //引入PHPExcel类
      vendor(&#39;PHPExcel.PHPExcel.Reader.Excel5&#39;);
      //获取上传后的文件名
      $fileName = $info->getSaveName();
      //文件路径
      $filePath = &#39;public/uploads/excel/&#39;.$fileName;
      //实例化PHPExcel类
      $PHPReader = new \PHPExcel_Reader_Excel5();
      //读取excel文件
      $objPHPExcel = $PHPReader->load($filePath);
      //读取excel文件中的第一个工作表
      $sheet = $objPHPExcel->getSheet(0);
      $allRow = $sheet->getHighestRow();  //取得总行数
      //$allColumn = $sheet->getHighestColumn();  //取得总列数
      //从第二行开始插入,第一行是列名
      for ($j=2; $j <= $allRow; $j++) {
        $data[&#39;name&#39;] = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();
        $data[&#39;tel&#39;] = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();
        $data[&#39;addr&#39;] = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();
        $last_id = Db::table(&#39;users&#39;)->insertGetId($data);//保存数据,并返回主键id
        if ($last_id) {
          echo "第".$j."行导入成功,users表第:".$last_id."条!<br/>";
        }else{
          echo "第".$j."行导入失败!<br/>";
        }
      }
    }else{
      echo "上传文件失败!";
    }
  }

출력 결과:


주의:

vendor()를 사용하여 타사 라이브러리를 도입하는 것은 네임스페이스 형식입니다. 기본 코드는 "."를 "/"로 자동 대체하므로 "/"를 대신 사용하세요.

위 코드는 직접 복사하여 사용할 수 있지만 데이터베이스 관련 정보는 직접 변경해야 합니다. !


위 내용은 Thinkphp5+PHPExcel은 테이블 데이터 일괄 업로드 기능을 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.