ThinkPHP3.2利用PHPExcel导出Excel
2017-01-12 11:06
543 查看
最近做了一个关于微信投票的PHP项目,里面有个功能要求能导出选手信息生成Excel表格。于是,我采用PHPExcel类库集成到thinkphp3.2框架来实现这个功能。
第一步,先到PHPExcel官网下载PHPExcel的类库文件。各位可以点击这里到PHPExcel官网。
解压目录如下图:
打开Classes文件夹,复制PHPExcel文件夹和PHPExcel.php到项目所在的ThinkPHP的Library/Org/Util/目录下。
第二步,根据PHPExcel的API文档和需求,写导出Excel的后台代码。
效果如下:
更多的关于PHPExcel的用法在PHPExcelAPI文档查看,当然这是官网的英文版。
第一步,先到PHPExcel官网下载PHPExcel的类库文件。各位可以点击这里到PHPExcel官网。
解压目录如下图:
打开Classes文件夹,复制PHPExcel文件夹和PHPExcel.php到项目所在的ThinkPHP的Library/Org/Util/目录下。
第二步,根据PHPExcel的API文档和需求,写导出Excel的后台代码。
/* * 导出成Excel表格 */ public function exportExcel(){ //根据投票ID获取选手资料 $vote_id = $_GET['vote_id']; $select['id'] = $_GET['vote_id']; $vote = D('vote'); $result = $vote->where($select)->find(); $filename =$result['theme'].date('Ymd',time()).'.xlsx'; $sheetname = $result['theme']; //查询选手数据,根据排名先后排序 $sql = 'SELECT NAME,info,vote_count,rank,img FROM (SELECT A.*, @rownum:=@rownum+1 AS rownum, IF(@vote_count=vote_count,@rank,@rank:=@rownum) AS rank,@vote_count:=vote_count FROM ='.$vote_id .' GROUP BY id ORDER BY vote_count DESC) A, )B) AS result '; $model = new \Think\Model(); $data = $model->query($sql); //引入phpEscel类,因为phpExcel没有命名空间,因此要使用import这样的方法 import('Org.Util.PHPExcel'); //实例化phpExcel类 $objPHPExcel = new \PHPExcel(); //设置文本对齐方式 $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objActSheet=$objPHPExcel->getActiveSheet(); //设置当前sheet的值 $objPHPExcel->getActiveSheet()->setTitle("$sheetname"); $letter = array('A','B','C','D','E'); //设置表头数据 $tableheader = array('姓名','信息','总票数','排名','图片'); //填充表格表头 for($i = 0; $i < count($tableheader); $i++){ $objPHPExcel->getActiveSheet()->setCellValue("$letter[$i]1", "$tableheader[$i]"); } //填充数据 $j = 1; for($i = 0;$i < count($data); $i++){ $j = $j +1; for($row = 0; $row < count($data[$i]);$row++){ /*设置表格宽度*/ $objActSheet->getColumnDimension("$letter[$row]$j")->setWidth(50); /*设置表格高度*/ $objPHPExcel->getActiveSheet()->getRowDimension($j)->setRowHeight(50); switch($row){ case 0: $value = $data[$i]['name']; //设置表格的值 $objPHPExcel->getActiveSheet()->setCellValue("$letter[$row]$j", "$value"); break; case 1: $value = $data[$i]['info']; $objPHPExcel->getActiveSheet()->setCellValue("$letter[$row]$j", "$value"); break; case 2: $value = $data[$i]['vote_count']; $objPHPExcel->getActiveSheet()->setCellValue("$letter[$row]$j", "$value"); break; case 3: $value = $data[$i]['rank']; $objPHPExcel->getActiveSheet()->setCellValue("$letter[$row]$j", "$value"); break; case 4: //实例化excel图片处理类 $objDrawing = new \PHPExcel_Worksheet_Drawing(); $imgURL = $data[$i]['img']; $str = str_replace('Vote/index.php',"$imgURL",$_SERVER['SCRIPT_FILENAME']); $objDrawing ->setPath($str); $objDrawing->setHeight(50); $objDrawing->setCoordinates("$letter[$row]$j"); //插入图片 $objDrawing->getShadow()->setVisible(true); $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); default; } } } //保存 import('Org.Util.PHPExcel.IOFactory'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); //设置下载类型 header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header('ContentDisposition:attachment;filename="'.$filename.'"'); //设置下载文件名 header("Content-Transfer-Encoding:binary"); $objWriter ->save('php://output'); //导出文件 }
效果如下:
更多的关于PHPExcel的用法在PHPExcelAPI文档查看,当然这是官网的英文版。
相关文章推荐
- Thinkphp 3.2.2 利用phpexcel将数据通过excel导出
- thinkphp3.2 运用PHPExcel将数据导出Excel
- thinkphp利用phpexcel实现导出导入excel
- ThinkPHP中利用PHPEXCEL进行excel导出
- ThinkPHP使用PHPexcel导出excel文件(已封装的输出类)
- Thinkphp 3.2 命令空间版使用PHPExcel导出数据
- 利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
- Thinkphp3.2 PHPexcel 导出
- thinkphp3.2 运用phpexcel将excel文件导入mysql数据库
- 利用PHPExcel导出Excel并设置Excel格式
- 利用PHPExcel读取Excel的数据和导出数据到Excel
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
- 利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
- thinkPHP3.2 Excel的导入和导出以及Word的导出
- 利用PHPExcel读取Excel的数据和导出数据到Excel
- thinkphp3.2中实现phpexcel导出带生成图片示例
- ThinkPHP3.2导出excel
- 利用phpexcel把excel导入数据库和数据库导出excel实现
- thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片
- ThinkPHP 3.2 PHPExcel 导入导出文件 第三方类库不能用问题解决