tp5 phpexcel 导入,导出 excel表格

一,Excel导入:

1,composer 安装phpExcel:

composer require phpoffice/phpexcel  (好像只有Classes里面的文件有用,其他可删除)

2,前端代码

  1. <form method="post" action="{:url('student/savestudentImport')}" class="form-signin" enctype="multipart/form-data" >  
  2.     <input name="excel" type="file" class="form-control">  
  3.     <button class="btn btn-lg btn-primary btn-block">导入button>  
  4. form>

3,控制器

  1. public function savestudentImport(){  
  2.         //import('phpexcel.PHPExcel', EXTEND_PATH);//方法二  
  3.         vendor("PHPExcel.PHPExcel"); //方法一  
  4.         $objPHPExcel = new \PHPExcel();  
  5.   
  6.         //获取表单上传文件  
  7.         $file = request()->file('excel');  
  8.         $info = $file->validate(['size'=>15678,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');  
  9.         if($info){  
  10.             $exclePath = $info->getSaveName();  //获取文件名  
  11.             $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;   //上传文件的地址  
  12.             $objReader =\PHPExcel_IOFactory::createReader('Excel2007');  
  13.             $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8  
  14.             echo "<pre>";  
  15.             $excel_array=$obj_PHPExcel->getsheet(0)->toArray();   //转换为数组格式  
  16.             array_shift($excel_array);  //删除第一个数组(标题);  
  17.             $data = [];  
  18.             $i=0;  
  19.             foreach($excel_array as $k=>$v) {  
  20.                 $data[$k]['title'] = $v[0];  //数据表字段赋值
  21.                 $i++;  
  22.             }  
  23.            $success=Db::name('t_station')->insertAll($data); //批量插入数据   
  24.            $error=$i-$success;  
  25.             echo "总{$i}条,成功{$success}条,失败{$error}条。";    
  26.         }else{  
  27.             // 上传失败获取错误信息  
  28.             echo $file->getError();  
  29.         }  
  30.     }  

二,Excel导出


  1. error_reporting(E_ALL); 
  2. ini_set('display_errors', TRUE);
  3. ini_set('display_startup_errors', TRUE);

  4. vendor("PHPExcel.PHPExcel");
  5. //创建对象  
  6. $excel = new PHPExcel();  
  7. //Excel表格式,这里简略写了8列  
  8. $letter = array('A','B','C','D','E','F','F','G');  
  9. //表头数组  
  10. $tableheader = array('学号','姓名','性别','年龄','班级');  
  11. //填充表头信息  
  12. for($i = 0;$i < count($tableheader);$i++) {  
  13.     $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");  
  14. }  
  15.   
  16. //表格数组  
  17. $data = array(  
  18.     array('1','小王','男','20','100'),  
  19.     array('2','小李','男','20','101'),  
  20.     array('3','小张','女','20','102'),  
  21.     array('4','小赵','女','20','103')  
  22. );  
  23. //填充表格信息  
  24. for ($i = 2;$i <= count($data) + 1;$i++) {  
  25.     $j = 0;  
  26.     foreach ($data[$i - 2] as $key=>$value) {  
  27.         $excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");  
  28.         $j++;  
  29.     }  
  30. }  
  31.   
  32. //创建Excel输入对象  
  33. $write = new PHPExcel_Writer_Excel5($excel);  
  34. header("Pragma: public");  
  35. header("Expires: 0");  
  36. header("Cache-Control:must-revalidate, post-check=0pre-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="testdata.xls"');  
  42. header("Content-Transfer-Encoding:binary");  
  43. $write->save('php://output'); 



你可能感兴趣的:(php)