rinald_未来往事

tp5 Excel表格导入_tp5导出Excel

PHP
thinkphp5使用PHPExcel导入Excel、csv表格,thinkphp5表格导入导出

tp5使用PHPExcel导入Excel表格文件:

  1. PS:将PHPExcel扩展包放到vendor目录下  
  2. /vendor/PHPExcel.php  
  3. /vendor/PHPExcel  
  4.   
  5. public function uploadUser(){  
  6.   if(Request::instance()->isPost()){  
  7.     $file = request()->file('file');        // 获取表单提交过来的文件  
  8.     $error = $_FILES['file']['error'];  // 如果$_FILES['file']['error']>0,表示文件上传失败  
  9.     if(!$error){  
  10.       $dir = ROOT_PATH . 'public' . DS . 'upload';  
  11.       // 验证文件并移动到框架应用根目录/public/uploads/ 目录下  
  12.       $info = $file->validate(['size'=>3145728,'ext'=>'xls,xlsx,csv'])->rule('uniqid')->move($dir);  
  13.       /*判断是否符合验证*/  
  14.       if($info){    //  符合类型  
  15.         //$file_type = $info->getExtension();  
  16.         $filename = $dir. DS .$info->getSaveName();  
  17.         //echo $filename;  
  18.         Vendor("PHPExcel.IOFactory");  
  19.         $reader = \PHPExcel_IOFactory::createReader('Excel2007'); //设置以Excel2007格式  
  20.         $PHPExcel = $reader->load($filename); // 载入excel文件  
  21.         $sheet = $PHPExcel->getSheet(0); // 读取第一個工作表  
  22.         $highestRow = $sheet->getHighestRow(); // 取得总行数  
  23.         $highestColumm = $sheet->getHighestColumn(); // 取得总列数  
  24.         /** 循环读取每个单元格的数据 */  
  25.         $User = new User;  
  26.         for ($row = 2; $row <= $highestRow$row++){//行数是以第1行开始,这里示例中excel有3列字段  
  27.           $userName = $sheet->getCell('A'.$row)->getValue();;  
  28.           $website = $sheet->getCell('B'.$row)->getValue();;  
  29.           $phone = $sheet->getCell('C'.$row)->getValue();;  
  30.           $where = array();  
  31.           $where['website'] = $website ? $website : 'http://fity.cn';  
  32.           $where['phone'] = $phone;  
  33.           $userInfo = $User->where($where)->find();  
  34.           if($userInfo){  
  35.             $userInfo = $userInfo->toArray();  
  36.           }  
  37.           $data = array();  
  38.           if (!$userInfo) {  
  39.             $data = array(  
  40.               'userName'  =>  $userName,  
  41.               'website'  =>  $website,  
  42.               'phone'    =>  $phone  
  43.             );  
  44.             $User->data($data,true)->isUpdate(false)->save();  
  45.           }  
  46.         }  
  47.         $this->success('导入数据库成功',url('index'));  
  48.       } else//  不符合类型业务  
  49.         $this->error('请选择上传3MB内的excel表格文件...');  
  50.         //echo $file->getError();  
  51.       }  
  52.     }else{  
  53.       $this->error('请选择需要上传的文件...');  
  54.     }  
  55.        
  56.   }  
  57. }  

tp5使用PHPExcel导出数据为Excel表格:

  1. PS:将PHPExcel扩展包放到vendor目录下  
  2. /vendor/PHPExcel.php  
  3. /vendor/PHPExcel  
  4.   
  5. public function exportUser(){  
  6.   //引入PHPExcel库文件  
  7.   Vendor("PHPExcel");  
  8.   //创建对象  
  9.   $excel = new \PHPExcel();  
  10.   //Excel表格式,这里简略写了3列  
  11.   $letter = array('A','B','C','D');  
  12.   //表头数组         
  13.   $tableheader = array('姓名','手机号','网址');  
  14.   //填充表头信息  
  15.   for($i = 0;$i < count($tableheader);$i++) {  
  16.     $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");  
  17.   }  
  18.   //表格数组  
  19.   $data = array(  
  20.       array('测试1','18888888888','http://fity.cn'),  
  21.       array('测试2','18888888888','http://fity.cn'),  
  22.       array('测试2','18888888888','http://fity.cn'),  
  23.   );  
  24.   //填充表格信息  
  25.   for ($i = 2;$i <= count($data) + 1;$i++) {  
  26.     $j = 0;  
  27.     foreach ($data[$i - 2] as $key=>$value) {  
  28.       $excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");  
  29.       $j++;  
  30.     }  
  31.   }  
  32.   //创建Excel输入对象  
  33.   $write = new \PHPExcel_Writer_Excel2007($excel);  
  34.   header("Pragma: public");  
  35.   header("Expires: 0");  
  36.   header("Cache-Control:must-revalidate, post-check=0, pre-check=0");  
  37.   header("Content-Type:application/force-download");  
  38.   header("Content-Type:application/vnd.ms-execl");  
  39.   header("Content-Type:application/octet-stream");  
  40.   header("Content-Type:application/download");;  
  41.   header('Content-Disposition:attachment;filename="导出测试.xls"');  
  42.   header("Content-Transfer-Encoding:binary");  
  43.   $write->save('php://output');  
  44. }  

tp5使用自定义函数导出数据为Excel表格:

  1. public function exportUser(){  
  2.   $userList = Db::name('user')->select();  
  3.   $string = "姓名\t手机号\t网址\t\n";  
  4.   $string = iconv('utf-8','gb2312',$string);  
  5.   foreach ($userList as $key=>$val) {  
  6.     $userName  = iconv('utf-8','gb2312',$val['userName']);  
  7.     $phone  = $val['phone'];  
  8.     $website  = iconv('utf-8','gb2312',$val['website']);  
  9.     $time  = date('Y-m-d H:i:s',$val['time']);  
  10.     $string .= $userName."\t".$phone."\t".$website."\t".$time."'\t\n";  
  11.   }  
  12.    $fileName = date("YmdHis").".xls";  
  13.    $this->exportExcelDriver($fileName,$string); //调用Excel导出函数  
  14. }  
  15.   
  16. //Excel导出函数  
  17. protected function exportExcelDriver($filename,$content){  
  18.    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
  19.    header("Content-Type: application/vnd.ms-execl");  
  20.    header("Content-Type: application/force-download");  
  21.    header("Content-Type: application/download");  
  22.    header("Content-Disposition: attachment; filename=".$filename);  
  23.    header("Content-Transfer-Encoding: binary");  
  24.    header("Pragma: no-cache");  
  25.    header("Expires: 0");  
  26.    echo $content;  
  27.  }  

原文作者:rinald
原文地址:http://fity.cn/post/621.html
互联网技术更新较快,本站很多文章具有实效性,我会及时更新原文,但转载的文章无法通知更新。为了不给读者造成困惑或误导,请您在转载时保留此出处信息,尊重别人也是尊重自己。

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。