当前位置:网站首页 > tp日志 > 正文

thinkphp怎么导出Excel表格

thinkphp教练 0

  之前给一个客户开发一个一物一码的系统,客户要求能把用户的信息按需要的列数导出Excel表格。

  如果你要自己开发PHP操作Excel或者thinkphp框架操作Excel难度都非常大的,反正我是搞不定,但是做技术的就需要思维灵活点,自己本身搞不定,就找能搞定的来完成任务。

  现在比较常用的是PHPExcel 插件。

  

  之前开发那个项目的时候,没有用composer,直接是下载插件包,放在thinkphp的 vender目录下。



然后再控制器中引入的时候写vendor('vendor下的文件夹名.php文件的名字'),写到php文件名就行,不要写到类名,注意加引号



比如我现在这个导出Excel的。



vendor("PHPExcel.PHPExcel"); //方法一 

Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');

Vendor('PHPExcel.PHPExcel.Writer.Excel2007');

$objExcel=new \PHPExcel();

$objWriter=\PHPExcel_IOFactory::createWriter($objExcel,'Excel2007');

$objActSheet=$objExcel->getActiveSheet();





在thinkphp 里面这样就可以引入读取进来了。



然后我把我的导出Excel的代码贴出来 。





 public function daochu($id){

   

    /*

    $xlsName  = "pollCode";

    $xlsCell  = array(

        //array('code_id','序号'),

        //array('code_number','注册码编号'),

        array('user_phone','联系方式'),

        array('user_card','身份证号码'),

    );

   // $xlsModel = M('alliance_user_poll');

   // $xlsData  = $xlsModel->Field('code_id,code_number,user_phone,user_card')->select();

     $xlsData =  db('jingpai_records')->select();

    foreach ($xlsData as $k => $v)

    {

        $xlsData[$k]['user_phone']=$v['record_usertel']?$v['record_usertel']:'暂无';

        $xlsData[$k]['user_card']=$v['record_username']?$v['record_username']:'暂无';

    }

    $this->exportExcel($xlsName,$xlsCell,$xlsData);

  */

     

     $xlsData=db('jingpai_records')->where("record_shopid",$id)->select();

       $volume=array();

        $edition=array();

      foreach ($xlsData as $key => $row)

    {

        $volume[$key]  = $row['record_money'];

        $edition[$key] = $row['record_username'];

    }



    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $xlsData);

     

     

     //把时间戳转时间

       foreach ($xlsData as $key => $row)

    {

         $xlsData[$key]["record_addtime"] = date("Y-m-d H:i:s",$row['record_addtime']) ;

          $xlsData[$key]["record_shopid"] = $this->getcatnamebyid($this->getshopcategorybyshopid($row['record_shopid']));

          $xlsData[$key]["record_idcard"] = $this->getidcardbytelandname($row['record_usertel'],$row['record_username']);

          $xlsData[$key]["record_shopname"] = $this->getshopnamebyshopid($row['record_shopid']);

          //$xlsData[$key]["record_shopid"]=   $this->getshopnamebyshopid($row['record_shopid']);

      //$row['record_addtime']=date("Y-m-d H:i:s",$row['record_addtime']) ;

    }

     

//Vendor('PHPEXCEL.PHPEXCEL');

      vendor("PHPExcel.PHPExcel"); //方法一 

Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');

Vendor('PHPExcel.PHPExcel.Writer.Excel2007');

$objExcel=new \PHPExcel();

$objWriter=\PHPExcel_IOFactory::createWriter($objExcel,'Excel2007');

$objActSheet=$objExcel->getActiveSheet();

$key=ord("A");

$letter=explode(',',"A,B,C,D,E,F,G,H");

$arrHeader=array('ID','姓名','手机','出价','添加时间','区域','摊位编号',"身份证后6位数");

$length=count($arrHeader);

for($i=0;$i<$length;$i++){

$objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");

     

}

     

   

foreach($xlsData as $k =>$v){

$k+=2;

$objActSheet->setCellValue('A'.$k,$v['record_id']);

   

$objActSheet->setCellValue('B'.$k,$v['record_username']);

$objActSheet->setCellValue('C'.$k,$v['record_usertel']);

$objActSheet->setCellValue('D'.$k,$v['record_money']);

$objActSheet->setCellValue('E'.$k,$v['record_addtime']);

    $objActSheet->setCellValue('F'.$k,$v['record_shopid']);

   $objActSheet->setCellValue('G'.$k,$v['record_shopname']);

   $objActSheet->setCellValue('H'.$k,$v['record_idcard']);

$objActSheet->getRowDimension($k)->setRowHeight(20);

}

$width=array(10,10,10,10,10,10,10,10,10,10);

$objActSheet->getColumnDimension('A')->setWidth($width[1]);

$objActSheet->getColumnDimension('B')->setWidth($width[2]);

$objActSheet->getColumnDimension('C')->setWidth($width[3]);

$objActSheet->getColumnDimension('D')->setWidth($width[4]);

$objActSheet->getColumnDimension('E')->setWidth($width[5]);

$objActSheet->getColumnDimension('F')->setWidth($width[6]);

$objActSheet->getColumnDimension('G')->setWidth($width[7]);

$objActSheet->getColumnDimension('H')->setWidth($width[8]);     



 // $objExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);       

     

$outfile=date('Y-m-d h:i:sa');

ob_end_clean();

header("Content-Type:application/force-download");

header("content-Type:application/octet-stream");

header("Content-Type:application/download");

header('Content-Disposition:inline;filename="'.$outfile.'.xls"');

header('Content-Transfer-Encoding:binary');

header('Cache-Control:must-revalidate,post-check=0,pre-check=0');

header('Pragma:no-cache');

$objWriter->save('php://output');



     

   

   

   }





-

这样就可以导出Excel表格了。