一直习惯用thinkPHP框架,正在对这个框架进行深入研究,今天研究了Excel表格导入,在网上找了很多人的博客,代码,有的会报错,下载Excel类库时,大多都是官网下载,手动添加到thinkPHP中,自己找了一个通过命令下载的扩展方法。将一些改动,结合。最终完美的将信息导出到了表格中。。。
通过composer下载Excel表格的thinkPHP扩展 composer require phpoffice/phpexcel 下载到了vender/phpoffice/phpexcel
1 public function export(){ 2 //查询数据库信息 3 $xlsData = Db('user')->select(); 4 Vendor('PHPExcel.PHPExcel');//调用类库,路径是基于vendor文件夹的 5 Vendor('PHPExcel.PHPExcel.Worksheet.Drawing'); 6 Vendor('PHPExcel.PHPExcel.Writer.Excel2007'); 7 //实例化 8 $objExcel = new \PHPExcel(); 9 //设置文档属性 10 $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007'); 11 //设置内容 12 $objActSheet = $objExcel->getActiveSheet(); 13 $key = ord("A"); 14 $letter =explode(',',"A,B,C,D,E,F"); 15 $arrHeader = array('姓名','公司','职位','邮箱','状态'); 16 //填充表头信息 17 $lenth = count($arrHeader); 18 for($i = 0;$i < $lenth;$i++) { 19 $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]"); 20 }; 21 //填充表格信息 22 foreach($xlsData as $k=>$v){ 23 $k +=2; 24 $objActSheet->setCellValue('A'.$k,$v['u_name']); 25 $objActSheet->setCellValue('B'.$k, $v['u_tel']); 26 // // 图片生成 27 $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing(); 28 $objDrawing[$k]->setPath(ROOT_PATH.'public/index/images/pic10.jpg'); 29 // 设置宽度高度 30 $objDrawing[$k]->setHeight(40);//照片高度 31 $objDrawing[$k]->setWidth(40); //照片宽度 32 /*设置图片要插入的单元格*/ 33 $objDrawing[$k]->setCoordinates('C'.$k); 34 // 图片偏移距离 35 $objDrawing[$k]->setOffsetX(30); 36 $objDrawing[$k]->setOffsetY(12); 37 $objDrawing[$k]->setWorksheet($objExcel->getActiveSheet()); 38 //表格内容 39 $objActSheet->setCellValue('C'.$k, $v['u_id']); 40 $objActSheet->setCellValue('D'.$k, $v['u_pwd']); 41 // $objActSheet->setCellValue('E'.$k, $v['statuid'] == 1?'正常':'失效'); 42 43 44 // 表格高度 45 $objActSheet->getRowDimension($k)->setRowHeight(20); 46 } 47 48 $width = array(20,20,15,10,10,30,10,15); 49 //设置表格的宽度 50 $objActSheet->getColumnDimension('A')->setWidth($width[5]); 51 $objActSheet->getColumnDimension('B')->setWidth($width[1]); 52 $objActSheet->getColumnDimension('C')->setWidth($width[0]); 53 $objActSheet->getColumnDimension('D')->setWidth($width[5]); 54 $objActSheet->getColumnDimension('E')->setWidth($width[5]); 55 56 57 $outfile = "人员表.xls"; 58 ob_end_clean(); 59 header("Content-Type: application/force-download"); 60 header("Content-Type: application/octet-stream"); 61 header("Content-Type: application/download"); 62 header('Content-Disposition:inline;filename="'.$outfile.'"'); 63 header("Content-Transfer-Encoding: binary"); 64 header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 65 header("Pragma: no-cache"); 66 $objWriter->save('php://output'); 67 }
最后效果,就完成了