excel导出 tp调用phpexcel只能导出首页数据<求助>

浏览:1357 发布日期:2015/11/23 分类:求助交流 关键字: excel导出
<?php
namespace Admin\Controller;
use Think\Controller;

class CommonMemberController extends AuthController {

    public function _empty($action='index')
    {
        $CommonMember = M('CommonMember');

        $filter['status'] = 0;

        //搜索条件
        $search  =  I('search', array());

        $username   = $search['username'];
        $uid   = $search['uid'];
        $email     = $search['email'];
       // $old_PNO = $search['old_PNO'];

        if($username && isset($username)){
            $filter['username'] = array('like',"%{$username}%");
        }

        if($uid && isset($uid)){
            $filter['uid'] = $uid;
        }

        if($email && isset($email)){
            $filter['email'] = array('like',"%{$email}%");
        }


        //分页
        $total      = $CommonMember->where($filter)->count();

        if($total){
            $perNum = 30;
            $Page       = new \Think\Page($total,$perNum);

            $Page->setConfig('prev', "上一页");//上一页
            $Page->setConfig('next', '下一页');//下一页
            $Page->setConfig('first', '首页');//第一页
            $Page->setConfig('last', "末页");//最后一页
            $Page -> setConfig ( 'theme', '%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%' );

            $show       = $Page->show();

            $this->assign('total',$total);
            $this->assign('page',$show);
        

        }

        $commonmember_list = $CommonMember->where($filter)->order('uid asc')->limit($Page->firstRow.','.$Page->listRows)->select();
          //排序方法 desc/asc
        if($action == 'export'){
            if(!$commonmember_list){
                $this->error('没有搜索结果,无法导出数据');
            }
            $this->commonmember_export($commonmember_list);
        }
        $this->assign('search', $search);
        $this->assign('commonmember_list', $commonmember_list);

        $this->display('commonmember_list');
    }

   

    public function del()
    {
        $uid = I('uid');
        $result = M('CommonMember')-> delete($uid);
        if($result){
            $this->success('删除成功,正在转跳到列表');
        }else if($result){
            $this->erroe('删除失败');
        }
    }

    
    //导出数据方法
    protected function commonmember_export($commonmember_list)
    {
        
        $data = array();

        foreach ($commonmember_list as $k=>$commonmember_info){
            $data[$k][uid] = $commonmember_info['uid'];
            $data[$k][username] = $commonmember_info['username'];
            $data[$k][email] = $commonmember_info['email'];
           /* $data[$k][sex] = $commonmember_info['sex'];
            $data[$k][password] = $commonmember_info['password'];
            $data[$k][email]  = $commonmember_info['email'];
            
            $data[$k][tel] = $commonmember_info['tel'];
            $data[$k][qq] = $commonmember_info['qq'];
            $data[$k][city] = $commonmember_info['city'];*/
            $data[$k][status] = $commonmember_info['status'];
            $this->$data;

        }

        //print_r($commonmember_list);
       // print_r($data);exit;

        foreach ($data as $field=>$v){
            if($field == 'uid'){
                $headArr[]='用户ID';
            }

            if($field == 'username'){
                $headArr[]='用户名';
            }

            if($field == 'email'){
                $headArr[]='邮箱';
            }

            /*if($field == ''){
                $headArr[]='性别';
            }

            if($field == 'password'){
                $headArr[]='密码';
            }

            if($field == 'email'){
                $headArr[]='邮箱';
            }

            if($field == 'tel'){
                $headArr[]='手机号';
            }
            if($field == 'qq'){
                $headArr[]='qq';
            }

            if($field == 'city'){
                $headArr[]='地区';
            }*/
            if($field == 'status'){
                $headArr[]='状态';
            }
        }

        $filename="";

        $this->getExcel($filename,$headArr,$data);

    }


    private  function getExcel($fileName,$headArr,$data){
        //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Writer.Excel5");
        import("Org.Util.PHPExcel.IOFactory.php");

        $date = date("Y_m_d",time());
        $fileName .= "_{$date}.xls";


        //创建PHPExcel对象,注意,不能少了\
        $objPHPExcel = new \PHPExcel();
        $objProps = $objPHPExcel->getProperties();

        //设置表头
        $key = ord("A");
        //print_r($headArr);exit;
        foreach($headArr as $v){
            $colum = chr($key);
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
            $key += 1;
        }

        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();

        //print_r($data);exit;
        foreach($data as $key => $rows){ //行写入
            $span = ord("A");
            foreach($rows as $keyName=>$value){// 列写入
                $j = chr($span);
                $objActSheet->setCellValue($j.$column, $value);
                $span++;
            }
            $column++;
        }

        $fileName = iconv("utf-8", "gb2312", $fileName);

        //重命名表
        //$objPHPExcel->getActiveSheet()->setTitle('test');
        //设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objPHPExcel->setActiveSheetIndex(0);
        ob_clean();
        //ob_end_clean();//清除缓冲区,避免乱码
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=\"$fileName\"");
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); //文件通过浏览器下载
        exit;
    }


}
最佳答案
评论( 相关
后面还有条评论,点击查看>>