码迷,mamicode.com
首页 > Web开发 > 详细

thinkphp之Excel的导出

时间:2015-08-07 22:27:53      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

 

thinkphp之Excel的导出


Excel的导出步骤:

1.下载phpexcel包,置于以下thinkphp框架路径。

技术分享

内部还有一个文件夹和一个php文件

技术分享

2.创建excel对象并设置excel对象的属性(ExportALLAction.class.php );

3.设置excel的行列样式(字体、高宽、颜色、边框、合并等)

4.绘制报表表头

5.将查询数据写入excel

6.设置excel的sheet的名称<

7.设置excel报表打开后初始的sheet

8.设置输出的excel的头参数及文件名

9.调用创建excel的方法生成excel文件

前端代码(可以用form表单提交,本例子用js跳转,只要能调到控制层函数就行):

[html] view plaincopy

  1. <pre name="code" class="html"><div class="main">  

  2.     <p class="currentPosition"><a href="#">搜索</a>>业务员>A类</p>  

  3.     <p class="aButton"><span><input  type="button" value="导出" name="download" onclick="exportdata()"/></span></p>  

  4.     <div>  

  5.         <div >  

  6.             <table>  

  7.                 <thead>  

  8.                     <tr>  

  9.                     <th style="border:1px solid #DDD" > 序号</th>  

  10.                     <th style="border:1px solid #DDD" > 姓名</th>  

  11.                     <th style="border:1px solid #DDD" > 电话</th>  

  12.                     <th style="border:1px solid #DDD" > 备注</th>  

  13.                     </tr>  

  14.                 </thead>  

  15.                 <tbody>  

  16.                     <volist name="data"  id="vo" key="k">  

  17.                         <tr style="line-height:1.5em">  

  18.                             <td style="border:1px solid #DDD" ><{$k}></td>  

  19.                             <td style="border:1px solid #DDD"><{$vo.clientname}></td>  

  20.                             <td style="border:1px solid #DDD" ><{$vo.phone}></td>  

  21.                             <td style="border:1px solid #DDD" ><{$vo.remark}></td>  

  22.                          </tr>  

  23.                         <tr><tr>  

  24.                     </volist>  

  25.                 </tbody>  

  26.             </table>  

  27.         </div>  

  28.     </div>  

  29. </div>  

  30.   

  31. <script language="javascript" type="text/javascript">  

  32.    function exportdata(){  

  33.      window.location.href="__APP__/Admin/ExportALL/index/name/saler/type/A";   

  34.    }         

  35.  </script>  





控制层代码(前面部分是查数据,可以忽略,注意:ob_end_clean();//清除缓冲区,避免乱码)

[php] view plaincopy

  1. <?php  

  2. class ExportALLAction extends Action {    

  3.     public function index(){    

  4.         $name=$_GET[‘name‘];  

  5.         $type=$_GET[‘type‘];  

  6.         switch($name){  

  7.             case ‘agent‘:{  

  8.                 switch($type){  

  9.                     case ‘A‘:$data=M(‘agentclient‘)->where(array(‘type‘=>1))->select();$filename="代理商A类";break;  

  10.                     case ‘B‘:$data=M(‘agentclient‘)->where(array(‘type‘=>2))->select();$filename="代理商B类";break;  

  11.                     case ‘C‘:$data=M(‘agentclient‘)->where(array(‘type‘=>3))->select();$filename="代理商C类";break;  

  12.                     case ‘D‘:$data=M(‘agentclient‘)->where(array(‘type‘=>4))->select();$filename="代理商D类";break;  

  13.                     case ‘collect‘:$data=M(‘agentclient‘)->where(array(‘type‘=>5))->select();$filename="代理商收藏";break;  

  14.                     case ‘black‘:$data=M(‘agentclient‘)->where(array(‘type‘=>6))->select();$filename="代理商黑名单";break;  

  15.                     default:break;  

  16.                 }  

  17.             }break;  

  18.             case ‘manager‘:{  

  19.                 switch($type){  

  20.                     case ‘A‘:$data=M(‘managerclient‘)->where(array(‘type‘=>1))->select();$filename="销售经理A类";break;  

  21.                     case ‘B‘:$data=M(‘managerclient‘)->where(array(‘type‘=>2))->select();$filename="销售经理B类";break;  

  22.                     case ‘C‘:$data=M(‘managerclient‘)->where(array(‘type‘=>3))->select();$filename="销售经理C类";break;  

  23.                     case ‘D‘:$data=M(‘managerclient‘)->where(array(‘type‘=>4))->select();$filename="销售经理D类";break;  

  24.                     case ‘collect‘:$data=M(‘managerclient‘)->where(array(‘type‘=>5))->select();$filename="销售经理收藏";break;  

  25.                     case ‘black‘:$data=M(‘managerclient‘)->where(array(‘type‘=>6))->select();$filename="销售经理黑名单";break;  

  26.                     default:break;  

  27.                 }  

  28.             }break;  

  29.             case ‘saler‘:{  

  30.                 switch($type){  

  31.                     case ‘A‘:$data=M(‘salerclient‘)->where(array(‘type‘=>1))->select();$filename="业务员A类";break;  

  32.                     case ‘B‘:$data=M(‘salerclient‘)->where(array(‘type‘=>2))->select();$filename="业务员B类";break;  

  33.                     case ‘C‘:$data=M(‘salerclient‘)->where(array(‘type‘=>3))->select();$filename="业务员C类";break;  

  34.                     case ‘D‘:$data=M(‘salerclient‘)->where(array(‘type‘=>4))->select();$filename="业务员D类";break;  

  35.                     case ‘collect‘:$data=M(‘salerclient‘)->where(array(‘type‘=>5))->select();$filename="业务员收藏";break;  

  36.                     case ‘black‘:$data=M(‘salerclient‘)->where(array(‘type‘=>6))->select();$filename="业务员黑名单";break;  

  37.                     default:break;  

  38.                 }  

  39.             }break;  

  40.             default:break;  

  41.           

  42.         }  

  43.         //P($data);  

  44.         //exit;  

  45.         $OrdersData=$data;  

  46.         if(!$OrdersData){  

  47.             echo"<h1 align=‘center‘>没有数据</h1>";  

  48.             return;  

  49.         }  

  50.     //  P($OrdersData);  

  51.     //  exit;  

  52.         Vendor(‘PHPExcel.PHPExcel‘);  

  53.         Vendor(‘PHPExcel.PHPExcel.IOFactory‘);  

  54.         Vendor(‘PHPExcel.PHPExcel.Reader.Excel5‘);  

  55.         // Create new PHPExcel object    

  56.         $objPHPExcel = new PHPExcel();    

  57.         // Set properties    

  58.         $objPHPExcel->getProperties()->setCreator("ctos")    

  59.             ->setLastModifiedBy("ctos")    

  60.             ->setTitle("Office 2007 XLSX Test Document")    

  61.             ->setSubject("Office 2007 XLSX Test Document")    

  62.             ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")    

  63.             ->setKeywords("office 2007 openxml php")    

  64.             ->setCategory("Test result file");    

  65.     

  66.         //set width    

  67.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘A‘)->setWidth(8);    

  68.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘B‘)->setWidth(20);    

  69.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘C‘)->setWidth(20);    

  70.         $objPHPExcel->getActiveSheet()->getColumnDimension(‘D‘)->setWidth(20);    

  71.     

  72.   

  73.         //设置行高度    

  74.         $objPHPExcel->getActiveSheet()->getRowDimension(‘1‘)->setRowHeight(22);    

  75.     

  76.         $objPHPExcel->getActiveSheet()->getRowDimension(‘2‘)->setRowHeight(20);    

  77.     

  78.         //set font size bold    

  79.         $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);    

  80.         $objPHPExcel->getActiveSheet()->getStyle(‘A2:D2‘)->getFont()->setBold(true);    

  81.     

  82.         $objPHPExcel->getActiveSheet()->getStyle(‘A2:D2‘)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);    

  83.         $objPHPExcel->getActiveSheet()->getStyle(‘A2:D2‘)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);    

  84.     

  85.         //设置水平居中    

  86.         $objPHPExcel->getActiveSheet()->getStyle(‘A1‘)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);    

  87.         $objPHPExcel->getActiveSheet()->getStyle(‘A‘)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    

  88.         $objPHPExcel->getActiveSheet()->getStyle(‘B‘)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    

  89.         $objPHPExcel->getActiveSheet()->getStyle(‘C‘)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);   

  90.         $objPHPExcel->getActiveSheet()->getStyle(‘D‘)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    

  91.   

  92.   

  93.         //    

  94.         $objPHPExcel->getActiveSheet()->mergeCells(‘A1:N1‘);    

  95.     

  96.         // set table header content    

  97.         $objPHPExcel->setActiveSheetIndex(0)    

  98.             ->setCellValue(‘A1‘$filename.‘记录  时间:‘.date(‘Y-m-d H:i:s‘))    

  99.             ->setCellValue(‘A2‘‘编号‘)   

  100.             ->setCellValue(‘B2‘‘姓名‘)    

  101.             ->setCellValue(‘C2‘‘电话‘)    

  102.             ->setCellValue(‘D2‘‘备注‘) ;  

  103.         // Miscellaneous glyphs, UTF-8    

  104.         for($i=0;$i<=count($OrdersData)-1;$i++){    

  105.             $objPHPExcel->getActiveSheet(0)->setCellValue(‘A‘.($i+3), $i+1);    

  106.             $objPHPExcel->getActiveSheet(0)->setCellValue(‘B‘.($i+3), $OrdersData[$i][‘clientname‘]);    

  107.             $objPHPExcel->getActiveSheet(0)->setCellValue(‘C‘.($i+3), $OrdersData[$i][‘phone‘]);    

  108.             $objPHPExcel->getActiveSheet(0)->setCellValue(‘D‘.($i+3), $OrdersData[$i][‘remark‘]);     

  109.             $objPHPExcel->getActiveSheet()->getStyle(‘A‘.($i+3).‘:D‘.($i+3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);    

  110.             $objPHPExcel->getActiveSheet()->getStyle(‘A‘.($i+3).‘:D‘.($i+3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);    

  111.             $objPHPExcel->getActiveSheet()->getRowDimension($i+3)->setRowHeight(16);    

  112.               

  113.         }     

  114.         // Rename sheet    

  115.         $objPHPExcel->getActiveSheet()->setTitle($filename.‘记录‘);    

  116.     

  117.     

  118.         // Set active sheet index to the first sheet, so Excel opens this as the first sheet    

  119.         $objPHPExcel->setActiveSheetIndex(0);    

  120.     

  121.     ob_end_clean();//清除缓冲区,避免乱码  

  122.         // Redirect output to a client’s web browser (Excel5)    

  123.         header(‘Content-Type: application/vnd.ms-excel‘);    

  124.         $filenames=$filename.‘(‘.date(‘Ymd-His‘).‘).xls‘;  

  125.         header("Content-Disposition: attachment;filename={$filenames}");    

  126.         header(‘Cache-Control: max-age=0‘);    

  127.     

  128.         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel‘Excel5‘);    

  129.         $objWriter->save(‘php://output‘);    

  130.     

  131.     }    

  132. }    

参考例程:http://blog.csdn.net/jimlong/article/details/8606005


thinkphp之Excel的导出

标签:

原文地址:http://my.oschina.net/yonghan/blog/489359

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!